yield方法是暂停当前正在执行的线程对象,并执行其他线程。
这是一个静态方法,一旦执行,它会使当前线程让出CPU。让出的cpu并不代表当前线程不执行了。当前线程让出CPU后,还会CPU资源的争夺,但是是否能够再次被分配到,就不一定了。
举个栗子:
1 public class TestYield { 2 public static void main(String[] args) { 3 MyThread3 t1 = new MyThread3("t1"); 4 MyThread3 t2 = new MyThread3("t2"); 5 t1.start(); 6 t2.start(); 7 } 8 } 9 class MyThread3 extends Thread { 10 MyThread3(String s){ 11 super(s); 12 } 13 public void run(){ 14 for(int i =1;i<=11;i++){ 15 System.out.println(getName()+": "+i); 16 if(i%5==0){ 17 yield();//如果当前的i能整除5就执行一下yield方法 18 } 19 } 20 } 21 }
执行结果: