"Folytassuk a leckét. Mik a szálak prioritásai, és miért van rájuk szükség?
"Valós problémák esetén a különböző szálak által végzett munka fontossága nagyon eltérő lehet. A szálprioritás fogalmát ennek a folyamatnak a vezérlésére hozták létre. Minden szálnak van egy prioritása, amelyet egy 1-től 10-ig terjedő szám képvisel."
"10 a legmagasabb prioritás."
"1 a legalacsonyabb."
"Ha nincs prioritás, akkor egy szál 5-ös prioritást kap (normál)."
A szál prioritása nem befolyásolja jelentősen a szál munkáját, ehelyett inkább ajánlás. Ha több alvó szálnak kell futnia, a Java gép először egy magasabb prioritású szálat indít el.
"A Java gép úgy kezeli a szálakat, ahogy jónak látja. Az alacsony prioritású szálak nem maradnak tétlenül. Egyszerűen kevesebb végrehajtási időt kapnak, mint mások, de továbbra is végrehajtják őket."
"A legtöbb esetben a szálakat mindig ugyanazzal a prioritással hajtják végre. Az a kísérlet, hogy egy szálnak többet adjunk, mint a többit, gyakran a program architekturális problémáira utal."
"Hűha. És már arról álmodoztam, hogy a legmagasabb prioritást rendelem a szálaimhoz, hogy 10-szer annyit tegyenek."
"Kiderült, hogy itt a helyzet közel áll a véglegesítéshez: egy magas prioritású szál többet tud és fog működni, de lehet, hogy nem – erre nincs garancia."
"Mondd, hogyan tudom megváltoztatni egy szál prioritását?"
"Ez nagyon egyszerű. A Thread osztálynak két módszere van:
Módszer | Leírás |
---|---|
|
Új prioritást állít be |
|
Az aktuális szál prioritását adja vissza |
"A Thread osztálynak három állandója is van:"
nyilvános végső statikus int MIN_PRIORITY = 1;
publikus végső static int NORM_PRIORITÁS = 5;
nyilvános végső statikus int MAX_PRIORITY = 10;
"Hadd találjam ki. MIN_PRIORITY a minimális prioritás, MAX_PRIORITY a maximális, és NORM_PRIORITY az alapértelmezett prioritás?"
"Igen, pontosan. Megírhatod azt a kódot, amely a legmagasabb szálprioritást rendeli hozzá."
"Van itt valami trükk? Valami ilyesmi?"
Thread thread = new MyThread();
thread.setPriority(Thread. MAX_PRIORITY)
thread.start();
– Ez így van. Semmi bonyolult, igaz?
"Igen. Be tudod állítani/módosítani a prioritást egy szál indulása után? Vagy ez olyan, mint a setDaemon, ahol a szál indítása előtt kell beállítani az értéket?"
"A prioritás megváltoztatható a szál elindítása után. Mint már mondtam, ez nem eredményez drámai változásokat."
"Nos, ez egy kicsi, de érdekes téma volt. Köszönöm, Ellie."
GO TO FULL VERSION