【八股】Java线程之间协作

1. 指定线程执行顺序

可以使用join()方法(但中间加了Thread.sleep(1000)以后就不按顺序执行,不知道为什么)

public static void main(String[] args) throws CloneNotSupportedException {
    // 创建线程对象
    Thread t1 = new Thread(() -> {
        System.out.println("t1");
    });
    Thread t2 = new Thread(() -> {
        try {
            t1.join();
        } catch (InterruptedException e) {
            throw new RuntimeException(e);
        }
        System.out.println("t2");
    });
    Thread t3 = new Thread(() -> {
        try {
            t2.join();
        } catch (InterruptedException e) {
            throw new RuntimeException(e);
        }
        System.out.println("t3");
    });
    // 启动线程,启动顺序无所谓,因为有join的约束
    t3.start();
    t2.start();
    t1.start();
}

在这里插入图片描述

2.使用LOCK.wait()和LOCK.notify()

public static void main(String[] args) throws CloneNotSupportedException, InterruptedException {
    Object LOCK = new Object();
    Thread t1 = new Thread(() -> {
        System.out.println("t1");
        synchronized (LOCK) {
            LOCK.notify();
        }
    });
    Thread t2 = new Thread(() -> {
        try {
            synchronized (LOCK) {
                LOCK.wait();
            }
        } catch (InterruptedException e) {
            throw new RuntimeException(e);
        }
        System.out.println("t2");
    });
    t2.start();
    Thread.sleep(1000);
    t1.start();
}

在这里插入图片描述

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

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

相关文章

关闭 Microsoft Word 2010 配置窗口

关闭 Microsoft Word 2010 配置窗口 References 出现这种问题,主要是安装时所用账户和目前登陆的账户不为同一个账户造成的。或者你进行过覆盖安装或是重新安装过系统,但是 office 的安装目录没有更改。先激活 Microsoft Office,然后执行下列…

我们使用 Postgres 构建多租户 SaaS 服务时踩的坑

原文 Our Multi-tenancy Journey with Postgres Schemas and Apartment。这篇和之前发出的「如何使用 Postgres 对一个多租户应用分片」相呼应。 多租户 (Multip-tenancy) 是当下的热门话题。我对多租户应用程序的定义是一个能够服务于多个客户的软件系统,每个客户都…

Vscode创建php项目

1.安装中文插件(可安装可不安装) 2.安装主题(可安装可不安装) 3.安装和php相关的插件 4.打开文件夹 5.路由操作 查看项目中的route路由 浏览器中访问think 隐藏index.php入口文件 访问ThinkPHP5.1开发手册,复制apa…

uni-app纵向步骤条

分享一下项目中自封装的步骤条&#xff0c;存个档~ 1. 话不多说&#xff0c;先看效果 2. 话还不多说&#xff0c;上代码 <template><!-- 获取一个数组&#xff0c;结构为[{nodeName:"流程发起"isAudit:falsetime:"2024-02-04 14:27:35"otherDat…

Vue上实现上下左右无缝滚动、单步滚动-demo

安装 npm i vue3-seamless-scroll 效果 代码 示例一 <!--* Author: Jackie* Date: 2024-03-13 17:56:55 --> <template><vue3-seamless-scroll :list"list" class"scroll"><div class"item" v-for"(item, index) …

宁波ISO14068碳中和,ISO14068认证,ISO14068辅导

ISO 14068是国际标准化组织&#xff08;ISO&#xff09;&#x1f4dd;发布的关于碳中和的标准✒️&#xff0c;也被称为“碳中和国际标准”。该标准&#x1f9f0;定义了碳中和的&#x1f4f1;概念&#xff0c;包括组织或产品&#x1f460;通过自身减排、边界内&#x1fae7;碳清…

Python从0到100(七):Python列表介绍及运用

一、 列表概述 问题描述&#xff1a; 假设一个班有100个学生&#xff0c;如果每个变量存放一个学生的姓名&#xff0c;是不是很麻烦&#xff1f;如果有一千个学生甚至更多&#xff0c;那该怎么办呢&#xff1f; 列表是Python中的一种数据结构&#xff0c;它可以存储不同类型的…

蓝桥杯学习笔记(贪心)

在很久很久以前&#xff0c;有几个部落居住在平原上&#xff0c;依次编号为1到n。第之个部落的人数为 t 有一年发生了灾荒&#xff0c;年轻的政治家小蓝想要说服所有部落一同应对灾荒&#xff0c;他能通过谈判来说服部落进行联台。 每次谈判&#xff0c;小蓝只能邀请两个部落参…

打通数字化最后一公里,就是数据释放价值的最后一公里;

前 言 2023年底&#xff0c;中共中央、国务院正式印发《关于构建数据基础制度更好发挥数据要素作用的意见》(以下简称《数据二十条》)&#xff0c;明确提出探索数据资产入表新模式&#xff0c;要积极探索数据资产入表的可行路径&#xff0c;加快推动数据入表的实施进度&…

RK3568平台开发系列讲解(Linux系统篇)设备树中时钟描述

🚀返回专栏总目录 文章目录 一、时钟生产者(Clock Provider)1.1、clock-cells1.2、clock-frequency1.3、assigned-clocks 和 assigned-clock-rates1.4、clock-indices1.5、assigned-clock-parents二、时钟消费者(Clock Consumer)2.1、clocks

Matlab之已知2点绘制长度可定义的射线

目的&#xff1a;在笛卡尔坐标系中&#xff0c;已知两个点的位置&#xff0c;绘制过这两点的射线。同时射线的长度可以自定义。 一、函数的参数说明 输入参数&#xff1a; PointA&#xff1a;射线的起点&#xff1b; PointB&#xff1a;射线过的零一点&#xff1b; Length&…

【微服务】认识Dubbo+基本环境搭建

认识Dubbo Dubbo是阿里巴巴公司开源的一个高性能、轻量级的WEB和 RPC框架&#xff0c;可以和Spring框架无缝集成。Dubbo为构建企业级微服务提供了三大核心能力&#xff1a; 服务自动注册和发现、面向接口的 远程方法调用&#xff0c; 智能容错和负载均衡官网&#xff1a;https…

unity 添加newtonsoft-json

再git url上添加&#xff1a;com.unity.nuget.newtonsoft-json

seata测试demo(订单)

seata工作流程: seata对分布式事务的协调和控制就是31 1>XID&#xff1a;XID是全局事务的唯一标识&#xff0c;它可以在服务的调用链路中传递&#xff0c;绑定到服务的事务上下文中。 3>TC->TM->RM TC:事务协调器>就是seata 负责维护全局事务和分支事务的状…

Window平台应用程序打包(用Microsoft Visual Studio Installer Projects制作安装包)

window平台应用程序打包&#xff08;用Microsoft Visual Studio Installer Projects制作安装包&#xff09; 在window平台使用Visual Studio 开发完后&#xff0c;一般都需要打包成一个安装包文件 使用Visual Studio 自带的打包插件打包&#xff1a; 1 安装project setup打包…

Day 15 Servlet(一)

Servlet 1、简介2、快速入手2.1servlet jar包导入2.2 Content-type2.3 Servlet-url 写法2.4 注解方式配置servlet2.5 servlet 生命周期 1、简介 资源包括静态资源和动态资源。 对于服务器响应&#xff0c;有时候我们需要根据客户的不同请求返回不同的数据和页面。此时就需要一…

代码随想录训练营第55天 | LeetCode 583. 两个字符串的删除操作、​​​​​​LeetCode 72. 编辑距离、总结

目录 LeetCode 583. 两个字符串的删除操作 文章讲解&#xff1a;代码随想录(programmercarl.com) 视频讲解&#xff1a;LeetCode&#xff1a;583.两个字符串的删除操_哔哩哔哩_bilibili 思路 ​​​​​​LeetCode 72. 编辑距离 文章讲解&#xff1a;代码随想录(programm…

一、Jdk和eclipse安装和配置

1 JDK与eclipse的安装和配置 1.1JDK安装 1.2配置环境变量 &#xff08;1&#xff09;新建系统变量名为java_home,变量值为jdk安装路径&#xff0c;由自己决定&#xff0c;例如&#xff1a;C:\Program Files\Java\jdk-11.0.6 (2))新建系统变量名为classpath,变量值为".&q…

MySQL事务(超详细!!!)

目录 一、MySQL事务的概念 二、事务的ACID特点 1、原子性&#xff08;Atomicity&#xff09; 2、持久性 3、隔离性&#xff08;Isolation&#xff09; 3.1 事务的并发问题 ①、脏读(读取未提交数据) ②读已提交、不可重复读(前后多次读取&#xff0c;数据内容不一致) …

数学算法(算法竞赛、蓝桥杯)--判定质数试除法

1、B站视频链接&#xff1a;G06 判定质数 试除法_哔哩哔哩_bilibili 题目链接&#xff1a;【深基7.例2】质数筛 - 洛谷 #include <bits/stdc.h> using namespace std;bool is_prime(int x){if(x1)return 0;//特判1不是质数for(int i2;i*i<x;i){//枚举小的那个到根号n…