yield()方法
功能:
让线程放弃当前的CPU资源,让其他的任务去占用CPU的执行时间。
注:放弃的时间不确定,可能刚刚放弃,马上又获得CPU时间片
示例代码:
package a;
class YieldThread extends Thread{
@Override
public void run() {
long beginTime=System.currentTimeMillis();
int count=0;
for(int i=0;i<50000000;i++) {
//Thread.yield();
count=count+(i+1);
}
long endTime=System.currentTimeMillis();
System.out.println("用时:"+(endTime-beginTime)+" 毫秒!");
}
}
public class YieldTest {
public static void main(String[] args) {
YieldThread yieldTest=new YieldThread();
yieldTest.start();
}
}
运行结果:
**用时:23 毫秒!**
稍作修改:
将run()方法修改为:
public void run() {
long beginTime=System.currentTimeMillis();
int count=0;
for(int i=0;i<50000000;i++) {
Thread.yield();
count=count+(i+1);
}
long endTime=System.currentTimeMillis();
System.out.println("用时:"+(endTime-beginTime)+" 毫秒!");
}
运行结果:
**用时:4193 毫秒!**
结果分析:
在线程run()方法体中,添加了一行yield()方法,此时线程会放弃CPU资源,让其他的线程去占用CPU资源,于是两次运行的时间相差非常多。