Thread.yield()方法的作用:暫停當前正在執行的線程,並執行其他線程。(可能沒有效果)
yield()讓當前正在運行的線程回到可運行狀態,以允許具有相同優先級的其他線程獲得運行的機會。因此,使用yield()的目的是讓具有相同優先級的線程之間能夠適當的輪換執行。但是,實際中無法保證yield()達到讓步的目的,因為,讓步的線程可能被線程調度程序再次選中。
結論:大多數情況下,yield()將導致線程從運行狀態轉到可運行狀態,但有可能沒有效果。
public class TestYield {
public static void main(String [] args){
MyThread t1 = new MyThread("t1");
MyThread t2 = new MyThread("t2");
t1.start();
t2.start();
}
}
class MyThread extends Thread{
MyThread(String s){
super(s);
}
public void run(){
for(int i = 0; i <= 30; i ++){
System.out.println(getName()+":"+i);
if(("t1").equals(getName())){
if(i == 0){
yield();
}
}
}
}
}
運行的結果是變化的。