多线程的线程礼让

郎家岭伯爵 2022年05月10日 553次浏览

背景

多线程的线程礼让。

实现

注:

  • 礼让线程,让当前正在执行的线程暂停,但不阻塞;
  • 将线程从运行状态转为就绪状态;
  • 礼让的本质是让CPU重新调度,因此礼让的结果仍然是随机的。并不是把CPU的时间交付给另外的线程。

代码

package com.aac;


//线程礼让
//线程礼让不一定成功
public class ThreadYield {
    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() + "线程停止执行...");
    }
}

效果

总结

礼让是让CPU重新调度的机制,并不是把CPU的时间交付给另外的线程。因此礼让的结果仍然是随机的。