线程礼让 yield()
1.线程礼让就是让当前正在执行的线程暂停,**注意不是进入阻塞状态**
2.将线程从运行状态转为就绪状态
3.让cpu重新调度,礼让可能不会成功。
代码演示
public class YieldTest {
public static void main(String[] args) {
MyYield myYield = new MyYield();
new Thread(myYield,"线程A").start();
new Thread(myYield,"线程B").start();
}
}
class MyYield implements Runnable{
@Override
public void run() {
System.out.println(Thread.currentThread().getName()+"线程开始了");
// 礼让
Thread.yield();
System.out.println(Thread.currentThread().getName()+"线程结束了");
}
}
结果为
礼让成功时会出现 ABAB这种情况
礼让不成功时,则是这样。
我们再来看一下 不用线程礼让,他的运行结果,我们把调用礼让的方法注释掉
public class YieldTest {
public static void main(String[] args) {
MyYield myYield = new MyYield();
new Thread(myYield,"线程A").start();
new Thread(myYield,"线程B").start();
}
}
class MyYield implements Runnable{
@Override
public void run() {
System.out.println(Thread.currentThread().getName()+"线程开始了");
// 礼让
// Thread.yield();
System.out.println(Thread.currentThread().getName()+"线程结束了");
}
}
结果为
总结
线程的礼让也可能会成功,也可能不会成功。