目录
一、锁绑定多个条件Condition概述
- 一、锁绑定多个条件Condition概述
- 二、锁绑定多个条件Condition示例代码
- ReentrantLock 用来实现分组唤醒需要唤醒的线程,可以精确唤醒,而不是像synchronized 要么随机唤醒一个线程,要么唤醒全部线程。
-
示例需求
示例需求: 多线程之间按顺序调用,实现A->B->C 三个线程启动,要求如下: A线程 打印1次, B线程 打印2次, C线程 打印3次, 紧接着 A线程 打印1次, B线程 打印2次, C线程 打印3次, 。。。。 一共遍历3次
-
示例代码
import java.util.concurrent.locks.Condition; import java.util.concurrent.locks.Lock; import java.util.concurrent.locks.ReentrantLock; /** * @description: 1、lock有什么好处? * 锁绑定多个条件Condition:即实现分组唤醒需要唤醒的线程,可以精确唤醒,而不是像synchronized 要么随机唤醒一个线程,要么唤醒全部线程。 * 2、示例需求: * 多线程之间按顺序调用,实现A->B->C 三个线程启动,要求如下: * A线程 打印1次, B线程 打印2次, C线程 打印3次, * 紧接着 * A线程 打印1次, B线程 打印2次, C线程 打印3次, * 。。。。 * 一共遍历3次 * @author: xz */ class MyResource{ private int number =1;//A线程用1表示,B线程用2表示,C线程用3表示 private Lock lock=new ReentrantLock(); private Condition c1=lock.newCondition(); private Condition c2=lock.newCondition(); private Condition c3=lock.newCondition(); public void print1(){ lock.lock(); try { //1、判断!=1,说明A线程不输出,等待 while(number !=1){ c1.await(); } //2、A线程输出1次 for(int i=1;i
关注打赏
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?