06.yield
发布时间:2020-12-15 08:02:56 所属栏目:Java 来源:网络整理
导读:/** * sleep 与 yield 方法的区别在于,当线程调用 sleep 方法时调用线程会被阻塞挂起指定的时间, * 在这期间线程调度器不会去调度该线程。 而调用 yield 方法时,线程只是让出自己剩余的时间片, * 并没有被阻塞挂起,而是处于就绪状态,线程调度器下一次
/** * sleep 与 yield 方法的区别在于,当线程调用 sleep 方法时调用线程会被阻塞挂起指定的时间, * 在这期间线程调度器不会去调度该线程。 而调用 yield 方法时,线程只是让出自己剩余的时间片, * 并没有被阻塞挂起,而是处于就绪状态,线程调度器下一次调度时就有可能调度到当前线程执行 */ public class YieldDemo implements Runnable{ YieldDemo(){ Thread t = new Thread(this); t.start(); } @Override public void run() { for (int i = 0; i < 5; i++) { //当 i=O时让出CPU执行权,放弃时间片,进行下一轮调度 if (i%5==0){ System.out.println(Thread.currentThread()+" yield cpu..."); //当前线程让出CPU执行权,放弃时间片,进行下一轮调度 // Thread.yield(); } } System.out.println(Thread.currentThread()+" is over"); } public static void main(String[] args){ new YieldDemo(); new YieldDemo(); new YieldDemo(); //执行多次输出结果样式 //Thread[Thread-0,5,main] yield cpu... //Thread[Thread-1,main] yield cpu... //Thread[Thread-2,main] yield cpu... //Thread[Thread-0,main] is over //Thread[Thread-1,main] is over //Thread[Thread-2,main] is over //输出了第一行后当前线程让出了 CPU 执行权 //注释Thread.yield(); //执行多次输出结果存在同一线程的两行输出在一起 //Thread[Thread-0,main] is over } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |