עזרה Thread ב-JAVA

עזרה Thread ב-JAVA

אני חדש עם כל הנושא של Thread-ים ואשמח לעזרה.
יש לי קוד שרץ לאורך זמן רב (כדקה), והוא כאמור מאט לי את כל החלון בו אני עובד מכיון שהוא רץ על ה-Thread הראשי.
כעת אני רוצה להפריד את הקוד הארוך ולשים אותו ב-Thread נפרד, אך הבעיה היא שאני לא מצליח לעשות זאת מכיוון שבקוד הארוך הזה
יש שימוש באוביקטים שנמצאים במחלקה (לצורך הענין ה-label-ים או סתם משתנים אחרים) ואין לי אפשרות לגשת בהם כשאני עושה new Thread.

אמרו לי שאני צריך להשתמש ב-async אבל גם עם זה לא הצלחתי לעבוד.
אשמח לעזרה בעניין,
תודה.
 

BravoMan

Active member
נתחיל מזה, שאתה לא אמור לשנות את הממשק

מ-Thread אחר.

אם אני זוכר נכון, אתה כותב יישום שולחני, עם AWT.
אם לא, כדאי שתפרט באיזו סביבה אתה עובד ועם איזו ערכת GUI.

בכל מקרה, הרעיון בעבודה עם Thread שעושה עבוד ברקע, הוא שאתה לא משנה את הממשק מתוכו, אלא מסמן ל-thread הראשי מתי העובדה הסתיימה, ואז ה-Thread הראשי מעדכן את הממשק ע"פ תוצאות העבודה (ששמורים במשתנים כלשהם).

לכן, ב-labels של היישום ה-Thread המשני לא אמור לגעת.
לגבי מידע אחר שה-Thread צריך לעבוד עליו, זו כבר שאלה של ארגון קוד:
אם ה-Thread נוצר מ-class פנימי ל-class הראשי שלך, הוא יכול פשוט לראות את האיברים שלו.
אם הוא class נפרד לגמרי, אולי יש מידע שצריך לאחסן ב-class גלובלי כלשהו, אולי אפילו יש כאן מקום לאיזה singleton (גגל את זה).

כמובן, אי אפשר לייעץ על מבנה טוב בלי לראות את הקוד ולדעת מה ה-thread באמת צריך ומה לא.

גם האמירה "לא הצלחתי" לא ממש עוזרת לנו לעזור לך, כי לא ברור מה ניסית בפועל, מה לא עבד, והיכן נתקלת בבעיה.
ככל שתרבה בפרטים, כך נוכל לספק תשובות מדויקות יותר.
 
למעלה