5.3、线程礼让

  • 让当前正在执行的线程进入暂停状态,但不阻塞
  • 将线程从运行状态转为就绪状态
  • 让CPU重新调度,礼让但不一定成功!
package com.example.demo.thread;

/**
 * @projectName: demo
 * @package: com.example.demo.thread
 * @className: TestYiedld
 * @author:
 * @description: 测试两个线程
 * @date: 2021/11/26 18:25
 */
public class TestYiedld {
    public static void main(String[] args) {
        MyYield myYield1 = new MyYield();
        MyYield myYield2 = new MyYield();
        new Thread(myYield1,"线程1").start();
        new Thread(myYield2,"线程2").start();
    }
}

class MyYield implements Runnable{

    @Override
    public void run() {
        System.out.println(Thread.currentThread().getName()+"线程启动!");
        Thread.yield();
        System.out.println(Thread.currentThread().getName()+"线程停止!");
    }
}

去掉Thread.yield();
一定是下面的结果

image.png

礼让成功的结果(资源礼让后cpu分给1)

image.png

礼让成功的结果(资源礼让后cpu分给2)

image.png

礼让不成功的结果

image.png

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 概述 本文主要讲java中多线程的使用方法、线程同步、线程数据传递、线程状态及相应的线程函数用法等。首先让我们来了...
    Tian_Peng阅读 336评论 0 0
  • 写在前面的话: 这篇博客是我从这里“转载”的,为什么转载两个字加“”呢?因为这绝不是简单的复制粘贴,我花了五六个小...
    SmartSean阅读 4,821评论 12 45
  • Thread.yield() 礼让方法 假如有A,B两个线程,A线程调用礼让方法,会从cpu调度中出来,这个时候A...
    秋秋_6403阅读 79评论 0 0
  • 一扩展javalangThread类二实现javalangRunnable接口三Thread和Runnable的区...
    和帅_db6a阅读 503评论 0 1
  • 本文主要讲了java中多线程的使用方法、线程同步、线程数据传递、线程状态及相应的一些线程函数用法、概述等。在这之前...
    4ea0af17fd67阅读 597评论 2 17