Heim  >  Artikel  >  Java  >  Was ist der Unterschied zwischen yield() und sleep() in Java?

Was ist der Unterschied zwischen yield() und sleep() in Java?

王林
王林nach vorne
2023-05-07 21:55:061549Durchsuche

Unterschiede

1. Sleep() führt dazu, dass der aktuelle Thread für die angegebene Zeit angehalten wird, ohne CPU-Zeitscheiben zu verbrauchen

2. yield() ist nur eine Eingabeaufforderung an den CPU-Scheduler, wenn der CPU-Scheduler dies nicht ignoriert Diese Eingabeaufforderung führt zu einem Thread-Kontextwechsel.

sleep() führt dazu, dass der Thread kurzzeitig blockiert und innerhalb einer bestimmten Zeit CPU-Ressourcen freigibt.

Wenn yield() wirksam wird, sorgt yield() dafür, dass er aus dem Status RUNNING in den Status RUNNABLE übergeht state

sleep() Der Schlaf für eine bestimmte Zeit wird zu fast 100 % abgeschlossen, aber die Eingabeaufforderung yield() garantiert nicht unbedingt, dass

Ein Thread, der sleep() aufruft, und ein anderer Thread, der interrupt() aufruft, das Interrupt-Signal abfangen. aber yield wird nicht

Instances

package cn.hanquan.test;
/*
 * sleep模拟倒计时,每一秒减一
 */
public class Lambda {
public static void main(String[] args) {
 
// Labmda表达式
new Thread(() -> {
for (int i = 0; i < 100; i++) {
System.out.println(i);
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}).start();
}
}

Das obige ist der detaillierte Inhalt vonWas ist der Unterschied zwischen yield() und sleep() in Java?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:yisu.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen