yiled()⽅法的作⽤是放弃当前CPU的资源,将资源让给其它线程,但放弃的时间不确定,有可能刚刚放弃,⼜马上获得了CPU时间⽚。下⾯看⼀个⼩例⼦,看⼀下具体效果。
MyThread t = new MyThread(); t.start();
Thread.sleep(2);
for (int i = 0; i < 9000; i++) { System.out.println(\"i=\" + i); } }
public static class MyThread extends Thread { private long beginTime = System.currentTimeMillis(); private int count = 0; @Override
public void run() { super.run();
for (int i = 0; i < 1000; i++) {
yield();
count = count + (i + 1);
System.out.println(\"count=\" + count); }
long endTime = System.currentTimeMillis();
System.out.println(\"⽤时:\" + (endTime - beginTime) + \"毫秒\"); } }
看⼀下运⾏结果:
前三段是第⼀次运⾏的结果,可以看出来主线程和⼦线程是交替出现的,count是⼦线程打印的结果,i是主线程打印的结果。第四段和第五段分别是我第⼆次和第三次运⾏的结果,
因篇幅问题不能全部显示,请点此查看更多更全内容