yield的概念及使用姿势
概念:
当调用Thread.yield方法时,会给线程调度器一个当前线程愿意让出CPU使用的暗示,但是线程调度器可能会忽略这个暗示。
代码演示:
public class YieldDemo implements Runnable{ @Override public void run() { for (int i = 0; i < 10; i++) { System.out.println(Thread.currentThread().getName() + i); if (i == 5) { Thread.yield(); } } } public static void main(String[] args){ final Thread t1 = new Thread(new YieldDemo(),"A"); final Thread t2 = new Thread(new YieldDemo(),"B"); t1.start(); t2.start(); } }
分别有以下两种情况输出:
第一种情况:
A0,A1,A2,A3,A4,A5,A6,A7,A8,A9,B0,B1,B2,B3,B4,B5,B6,B7,B8,B9,
第二种情况:
A0,A1,A2,A3,A4,A5,B0,B1,B2,B3,B4,B5,B6,B7,B8,B9,A6,A7,A8,A9,
不积跬步无以至千里不积小流无以成江海