Konu öncelikleri - 1

"Dersimize devam edelim. Konu öncelikleri nelerdir ve bunlara neden ihtiyaç vardır?

"Gerçek dünya problemlerinde, farklı iş parçacıkları tarafından gerçekleştirilen işin önemi büyük ölçüde değişebilir. İş parçacığı önceliği kavramı, bu işlemi kontrol etmek için oluşturulmuştur. Her iş parçacığının 1'den 10'a kadar bir sayı ile temsil edilen bir önceliği vardır."

"10 en yüksek önceliktir."

"1 en düşük."

"Öncelik verilmezse, bir iş parçacığı önceliği 5 (normal) alır."

Bir iş parçacığının önceliği çalışmasını önemli ölçüde etkilemez, bunun yerine daha çok bir öneridir. Çalıştırılması gereken birkaç uyuyan iş parçacığı varsa, Java makinesi önce daha yüksek önceliğe sahip bir iş parçacığını başlatır.

"Java makinesi dizileri uygun gördüğü şekilde yönetir. Düşük önceliğe sahip ileti dizileri boşta bırakılmaz. Diğerlerine göre daha az yürütme süresi alırlar, ancak yine de yürütülürler."

"Çoğu durumda, iş parçacıkları her zaman aynı öncelikle yürütülür. Bir iş parçacığını diğerlerinden daha fazla vermeye çalışmak, genellikle bir programdaki mimari sorunların bir göstergesidir."

"Vay canına. Ve en yüksek önceliği ileti dizilerime atamayı zaten hayal etmiştim, böylece 10 kat daha fazlasını yapacaklardı."

"Buradaki durumun sonuçlanmaya yakın olduğu ortaya çıktı: yüksek önceliğe sahip bir ileti dizisi daha fazla çalışabilir ve çalışacak, ancak belki de çalışmayabilir - bunun garantisi yok."

"Söylesene, bir iş parçacığının önceliğini nasıl değiştiririm?"

"Çok kolay. Thread sınıfının iki yöntemi var:"

Yöntem Tanım
void setPriority(int newPriority)
Yeni bir öncelik belirler
int getPriority()
Geçerli iş parçacığı önceliğini döndürür

"Thread sınıfı ayrıca üç sabite sahiptir:"

genel nihai statik int MIN_PRIORITY = 1;

genel nihai statik int NORM_PRIORITY = 5;

genel nihai statik int MAX_PRIORITY = 10;

"Dur tahmin edeyim. MIN_PRIORITY minimum öncelik, MAX_PRIORITY maksimum ve NORM_PRIORITY varsayılan öncelik mi?"

"Evet, kesinlikle. En yüksek iş parçacığı önceliğini atayan kodu yazabilirsin."

"Burada bir hile mi var? Bunun gibi bir şey mi?"

Thread thread = new MyThread();
thread.setPriority(Thread. MAX_PRIORITY)
thread.start();

"Bu doğru. Karmaşık bir şey yok, değil mi?"

"Evet. Bir dizi başladıktan sonra önceliği ayarlayabilir/değiştirebilir misiniz? Yoksa dizi başlamadan önce değeri ayarlamanız gereken setDaemon gibi mi?"

"Öncelik, bir dizi başlatıldıktan sonra değiştirilebilir. Daha önce de söylediğim gibi, bu herhangi bir dramatik değişikliğe yol açmaz."

"Eh, bu küçük ama ilginç bir konuydu. Teşekkürler Ellie."