线程方法_礼让yield
要点:
(1)礼让线程,让当前正在执行的线程暂停,都是不阻塞
(2)将线程从运行状态转化为就绪状态
(3)加粗样式礼让不一定成功,要看cpu重新调度的结果
案例说明:
代码一:
package com.heima.Multithreading;
public class TestYield {
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()+"1");
Thread.yield();
System.out.println(Thread.currentThread().getName()+"2");
Thread.yield();
System.out.println(Thread.currentThread().getName()+"3");
}
}
代码二:
package com.heima.Multithreading;
public class TestYield {
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()+"1");
Thread.yield();
System.out.println(Thread.currentThread().getName()+"2");
// Thread.yield();
System.out.println(Thread.currentThread().getName()+"3");
}
}
重点讲解:
从代码一和代码二我们可以看出,当a礼让时,cpu会重新调度,但是如果还是调用到a,不是重新执行,而是继续走刚刚剩下的代码