Middle
Ի՞նչ տարբերություններ կան Thread.sleep() և Thread.yield() մեթոդների միջև։
sobes.tech AI
Պատասխան AI-ից
Thread.sleep() կանգնեցնում է ընթացիկ թելին որոշ ժամանակով և տեղափոխում է այն Timed Waiting վիճակի։ Դա չի տալիս CPU մյուս թելերին։ Thread.yield() տեղեկացնում է թելերի պլանավորողին, որ ընթացիկ թելը պատրաստ է ժամանակավորապես զիջել կատարումը մյուս թելերին նույն կամ ավելի բարձր առաջնահերթությամբ, բայց չկա երաշխիք, որ դա տեղի կունենա։ yield() տեղափոխում է թելին Runnable վիճակի։
Հիմնական տարբերությունները՝
- Տևողություն:
sleep()երաշխավորում է կանգնեցնել նշված ժամանակով։yield()չի երաշխավորում վերահսկողության փոխանցում կամ կոնկրետ ընդմիջման տևողություն։ - Թելի վիճակը:
sleep()տեղափոխում է թելինTimed Waiting(կամWaitingժամանակային սահմանափակմամբ)։yield()տեղափոխում էRunnable։ - Նպատակը:
sleep()օգտագործվում է դանդաղեցումներ մտցնելու համար։yield()օգտագործվում է այլ թելերի կատարումը թույլ տալու համար, հատկապես ցիկլերում, որպեսզի խուսափել CPU-ի մոնոպոլիզացիայից։ - Պլանավորիչ:
sleep()չի ազդում պլանավորողի վրա (բացառությամբ այն, որ թելը անգործ է)։yield()առաջարկ է պլանավորողի համար։
Օգտագործման օրինակ՝
// sleep() օգտագործում
try {
Thread.sleep(100); // 100 միլիսեկունդ դադար
} catch (InterruptedException e) {
Thread.currentThread().interrupt();
}
// yield() օգտագործում
Thread.yield(); // փորձել տալ կատարումը