
— Dərsimizə davam edək. Thread prioritetləri nədir və nə üçün lazımdır?
Real məsələlərdə müxtəlif thread-lərin işinin əhəmiyyəti fərqli ola bilər. Bu prosesi idarə etmək üçün iş prioriteti düşünüldü. Hər bir thread-in belə bir prioriteti var – 1-dən 10-a qədər ədəd.
10 – ən yüksək prioritetdir.
1 – ən aşağı.
Əgər prioritet təyin edilməyibsə, thread orta prioritet olan 5 prioritetini alır.
Thread-in prioriteti işinə çox təsir etmir, daha çox tövsiyə xarakterli olur. Bir neçə yatan thread varsa, Java-maşını əvvəlcə daha yüksək prioritetli thread-i işə salacaq.
Java-maşını thread-ləri öz bildiyi kimi idarə edir. Aşağı prioritetli thread-lər boş qalmayacaq. Sadəcə digərindən daha az vaxt alacaq, amma yenə də işləyəcək.
Əksər hallarda, thread-lər həmişə eyni prioritetlə işləyir. Bir thread-ə digərlərindən daha çox vaxt verməyə çalışmaq, çox vaxt proqramın arxitektural səhv olduğunu göstərir.
— Vay. Mən artıq xəyal edirdim ki, indi thread-ə ən yüksək prioritet verib, o da 10 qat çox iş görəcək.
— Amma burada vəziyyət finalize-ə yaxın: Yüksək prioritetli bir thread daha çox işləyə bilər, ya da yox - heç kim heç bir zəmanət vermir.
— Bu arada, thread-in prioritetini necə dəyişmək olar?
— Bu çox sadədir. Thread sinfində iki metod var:
Metod | Açıqlama |
---|---|
|
Prioritetin yeni dəyərini təyin edir |
|
Thread-in hazırkı prioritetini qaytarır |
Thread sinfində həmçinin üç sabit var:
public final static int MIN_PRIORITY = 1;
public final static int NORM_PRIORITY = 5;
public final static int MAX_PRIORITY = 10;
— Təxmin edim. MIN_PRIORITY — minimum prioritetdir, MAX_PRIORITY — maksimum, NORM_PRIORITY — standart prioritetmi?
— Bəli, tam olaraq belədir. Thread-ə ən yüksək prioritet təyin edən kodu yaza biləcəksənmi?
— Burada bir sürpriz var? Elə bu cür:
Thread thread = new MyThread();
thread.setPriority(Thread. MAX_PRIORITY)
thread.start();
— Tamamilə doğru. Çətin bir şey deyil, hə?
— Hə. Thread-in prioritetini başlatdıqdan sonra təyin/dəyişmək olar? Yoxsa burada setDaemon kimi – mütləq value-nu thread başlamazdan əvvəl təyin etmək lazımdır?
— Prioriteti başlatdıqdan sonra da dəyişə bilərsən. Dediyim kimi, bu, ciddi dəyişikliklər yaratmır.
— Kiçik, amma maraqlı bir mövzu. Təşəkkürlər, Elli.
GO TO FULL VERSION