一、Thread yield的概念
yield 是 Thread 类中的native方法,作用:让出当前线程CPU的时间片,使当前线程从执行状态变为就绪状态,cpu将会从就绪队列中重新选择一个线程,也就是说,当前线程还是有可能会被再次选择的。
每次运行程序,最终的执行结果都是不相同的,所以使用yield方法是无法控制线的执行顺序
1、设置优先级观察效果
通过设置线程的优先级,我们也无法做到控制线程的执行顺序;优先级高的线程,只是分配到CPU资源的可能性大
二、yield方法与锁
yield虽然放弃了占有的CPU资源,但是他不会释放自己持有的锁
线程1先执行获取锁后虽然调用了yield方法,但是由于锁被他持有,CPU资源即使被线程2获取,但由于线程1没有释放锁,所以线程2只能阻塞,释放CPU资源,直到线程1释放了锁,才能执行
三、yield与sleep方法比较
- yield从用法上看与sleep(0)十分相似,都可以让CPU重新分配执行权
- 他们都不会释放自己持有的锁
- 本质上看sleep方法是让当前线程阻塞,而yield是进入就绪态