— Darsimizni davom ettiramiz. Threadlarning ustuvorligi nima va ular nega kerak.
Haqiqiy vazifalarda turli threadlar ishi turlicha ahamiyatga ega bo'lishi mumkin. Bu jarayonni nazorat qilish uchun ish ustuvorligi ixtiro qilingan. Har bir threadda shunday ustuvorlik bor – bu 1 dan 10 gacha bo'lgan son.
10 – bu eng yuqori ustuvorlik.
1 – eng past.
Agar ustuvorlik kiritilmagan bo'lsa, thread 5 – o'rta ustuvorlikni oladi.
Thread ustuvorligi uning ishiga unchalik ta'sir qilmaydi, balki tavsiya xususiyatiga ega. Bir nechta uxlayotgan threadlarni ishga tushirish kerak bo'lsa, Java-mashina avval yuqori ustuvorlikka ega threadni ishga tushiradi.
Java-mashina threadlarni o'ziga to'g'ri kelgan holda boshqaradi. Past ustuvorlikka ega threadlar ham bekor o‘tirmaydi. Ular shunchaki boshqa threadlarga qaraganda kam vaqt oladi, lekin baribir bajariladi.
Ko'pincha threadlar har doim bir xil ustuvorlikda ishlaydi. Bir threadga boshqalardan ko'proq vaqt ajratishga urinish ko'pincha dastur arxitekturasi xatosini ko'rsatadi.
— Voy. Men allaqachon tasavvur qilgan edim, endi threadyeng yuqori ustuvorlikni tayinlayman va u 10 marta ko'proq ish qiladi.
— Lekin bu yerda, finalizega yaqin vaziyat: yuqori ustuvorlikka ega thread ko'proq ishlashi mumkin, lekin yong‘oq berilmaydi – hech kim kafolat bermaydi.
— Aytmoqchi, threadning ustuvorligini qanday o'zgartirish mumkin?
— Bu juda oddiy. Thread klassida ikkita metod bor:
| Metod | Ta'rif |
|---|---|
|
Ustuvorlikning yangi qiymatini o'rnatadi |
|
Threadning joriy ustuvorligini qaytaradi |
Thread klassida uchta konstant ham mavjud:
public final static int MIN_PRIORITY = 1;
public final static int NORM_PRIORITY = 5;
public final static int MAX_PRIORITY = 10;
— Men topdim. MIN_PRIORITY – minimal ustuvorlik, MAX_PRIORITY – maksimal, NORM_PRIORITY – odatdagi ustuvorlik?
— Ha, aynan shunday. Endi o'zing eng yuqori ustuvorlikni tayinlovchi kodni yozib ko'r.
— Bu yerda biror bir nayrang bormi? Shunday deb o'yladim:
Thread thread = new MyThread();
thread.setPriority(Thread. MAX_PRIORITY)
thread.start();
— Hammasi to'g'ri. Hech qanday murakkablik yo'q, to'g'rimi?
— Ha, to'g'ri. Threadning ustuvorligini ishga tushirgandan keyin ham o'rnatish/moslash mumkinmi? Yoki bu setDaemon kabi, miqdorni ishga tushirishdan oldin belgilash shartmi?
— Ustuvorlikni ishga tushirgandan keyin ham o'zgartirish mumkin. Men aytganimdek, bu katta o'zgarishlarga olib kelmaydi.
— Kichik, lekin qiziqarli mavzu. Rahmat, Elli.
GO TO FULL VERSION