29.使线程以固定顺序输出结果

借助wait和notify方法控制线程以固定的顺序执行: 

 /**
     * 控制输出字符的顺序,必须是固定顺序2,1
     * 采用wait-notify实现
     * @param args
     */
    public static void main(String[] args) {
        new Thread(() -> {
            synchronized (lock) {
                while (!isPrint2) {
                    try {
                        lock.wait();
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                }
                log.info("1");
            }
        }, "t1").start();

        new Thread(() -> {
            synchronized (lock) {
                log.info("2");
                isPrint2 = true;
                lock.notify();
            }

        }, "t2").start();
    }
}

借助park和unpark方法控制线程以固定的顺序执行: 

@Slf4j
public class ParkOrderDemo {

    public static void main(String[] args) {
        Thread t1 = new Thread(() -> {
            LockSupport.park();
            log.info("1");
        }, "t1");
        t1.start();

        new Thread(() -> {
            log.info("2");
            LockSupport.unpark(t1);
        }, "t2").start();
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/513740.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【c++】STl-list使用list模拟实现

主页:醋溜马桶圈-CSDN博客 专栏:c_醋溜马桶圈的博客-CSDN博客 gitee:mnxcc (mnxcc) - Gitee.com 目录 1. list的介绍及使用 1.1 list的介绍 1.2 list的使用 1.2.1 list的构造 1.2.2 list iterator的使用 1.2.3 list capacity 1.2.4 …

【Java】CAS详解

一.什么是CAS CAS(compare and swap) 比较并且交换. CAS是一个cpu指令,是原子的不可再分.因此基于CAS就可以给我们编写多线程的代码提供了新的思路---->使用CAS就不用使用加锁,就不会牵扯到阻塞,也称为无锁化编程 下面是一个CAS的伪代码: address是一个内存地址,expectVal…

电脑便签软件怎么用 纯分享几款电脑便签软件

在当今快节奏的生活中,随时记录灵感、待办事项或重要信息变得越来越重要。电脑便签软件成为了我们日常生活中不可或缺的工具之一。本文将介绍几款常见的电脑便签软件,并分享它们的使用方法,帮助读者更好地管理信息和提高工作效率。 1. 敬业签…

【ESP32S3 Sense接入语音识别+MiniMax模型+TTS模块语音播报】

【ESP32S3 Sense接入语音识别MiniMax模型TTS模块语音播报】 1. 前言2. 功能模块概述2.1 语音接入2.2 大模型接入2.3 TTS模块接入 3. 先决条件3.1 环境配置3.2 所需零件3.3 硬件连接步骤 4. 核心代码4.1 源码分享4.2 代码解析 5. 上传验证5.1 对话测试5.2 报错 6. 总结 1. 前言 …

NumPy的ndarray常用属性和索引你学会了吗

1.ndarray的4个重要属性 ndim:返回数组的维度数。例如,一维数组的ndim为1,二维数组的ndim为2 shape:返回数组的形状,即各个维度的大小。例如,对于一个二维数组,shape会返回一个包含行数和列数的…

Docker in Docker原理与实战探索

博主猫头虎的技术世界 🌟 欢迎来到猫头虎的博客 — 探索技术的无限可能! 专栏链接: 🔗 精选专栏: 《面试题大全》 — 面试准备的宝典!《IDEA开发秘籍》 — 提升你的IDEA技能!《100天精通鸿蒙》 …

使用CyberRT写第一个代码

0. 简介 计算框架是自动驾驶系统中的重中之重,也是整个系统得以高效稳定运行的基础。为了实时地完成感知、决策和执行,系统需要一系列的模块相互紧密配合,高效地执行任务流。由于各种原因,这些模块可能位于不同进程,也…

Android Studio 打开Logcat界面

在平时调试过程中查看调试日志需要打开 Android Studio Logcat界面。 每次安装AS都会忘记,自己备注一下。 AS->View->Tool Windows->Logcat

Windows12安装Docker

环境及工具(文末提供) Docker Desktop Installer.exe (官网) 一、查看windows相关配置 查看是否开启相应的功能,如果没有需要开启,然后重启电脑 打开任务管理器(CTRLSHIFTESC)-&g…

【Linux】进程控制详解

目录 前言 进程创建 认识fork 写时拷贝 再谈fork 进程终止 进程退出码 用代码来终止进程 常见的进程终止的方式 exit _exit 进程等待 进程等待的必要性 进程等待的方式 wait waitpid 详解status参数 详解option参数 前言 本文适合有一点基础的人看的&#…

【JavaScript】函数 ⑥ ( 使用 arguments 获取所有实参 | arguments 内置对象 | 伪数组概念 )

文章目录 一、使用 arguments 获取所有实参1、arguments 内置对象2、伪数组概念3、arguments 实参遍历4、arguments 代码示例 - 基本使用5、arguments 代码示例 - 遍历实参 一、使用 arguments 获取所有实参 1、arguments 内置对象 在 定义 JavaScript 函数 时 , 有时 不确定 形…

Spring定义Bean对象笔记(二)

前言:上一篇记录了通过XML文件来定义Bean对象,这一篇将记录通过注解和配置类的方式来定义Bean对象。 核心注解: 定义对象:Component,Service,Repository,Controller 依赖注入: 按类型:Autowired 按名称&am…

cesium 加载mapbox底图 黑色主题底图 84底图

cesium提供MapboxStyleImageryProvider,加载mapbox的影像图层,底图是84坐标系。 viewer.imageryLayers.addImageryProvider(new Cesium.MapboxStyleImageryProvider({styleId: dark-v11,accessToken: mapbox的token})); 效果图:加载mapbox黑…

简单使用bootstrap-datepicker日期插件

目录 下载datepicker 方式一: 方式二: 下载依赖 下载bootstarp.js 下载jquery 使用示例 日期选择 单独选择年 单独选择月 单独选择日 设置截止日期 设置默认日期 总结 下载datepicker 方式一: 下载地址 GitHub - uxsolution…

java运行时内存

从jdk1.7以及以后,静态变量和常量池存在堆空间。

关于搭建电商独立站跨境电商接入主流电商平台API商品接口对于商品功能模块的巨大应用

功能设计 首先我们来看下mall项目中商品功能的设计,主要包括商品管理、添加\编辑商品、商品分类、商品类型、品牌管理等功能,这里的功能同时涉及前台商城和后台管理系统。 商品管理【接入主流电商平台商品API接口丰富自建商城商品】 在mall项目的后台管…

JavaScript基础(5)之对象的方法和调用

JavaScript基础5之对象的方法和调用 对象对象使用语法属性和访问方法和调用null遍历对象 内置对象Math属性方法 基本数据类型和引用数据类型堆栈空间分配区别:简单类型的内存分配复杂类型的内存分配 对象 对象是 JavaScript 数据类型的一种,之前已经学习…

填谷式无源PFC电路

目录: 1、概述 2、原理 1、概述 如果不采用PFC,那么典型开关模式电源的功率因数约为0.6,因而会有相当大的奇次谐波失真(第三谐波有时和基本谐波一样大)。令功率因数小于1以及来自峰值负载的谐波减少了运行设备可用的实际功率。为运行这些低…

书生·浦语2.0体系技术报告

前言 本文是书生浦语二期实战营课程视频笔记,如果需要详细视频教程可自行搜索。 InternLM2 InternLM2-Base 高质量和具有很强可塑性的模型基座,是模型进行深度领域适配的高质量起点InternLM2 在Base基础上,在多个能力方向进行了强化&#x…

WSL安装与使用

开启之后,会提示你重启电脑才能使配置生效,我们重启即可。 电脑重启后,打开Microsoft Store搜索WSL,既可以看到支持的操作系统,我们选择Ubuntu即可,我们选择第一个就可以。 随后我们打开,发现报…