synchronized实现线程间通信的案例如果有多个线程那么就无法指定线程执行的顺序,我们可以使用Lock锁的Condition 实现线程定制化通信
实例:A线程打印2次A,B线程打印3次B,C线程打印5次C,按照此顺序循环10轮
思路:创建三个线程给每个线程设置一个标志位
线程A判断flag=0,打印2次,修改flag=1,通知线程B
线程B判断flag=1,打印3次,修改flag=2,通知线程C
线程C判断flag=2,打印5次,修改flag=0,通知线程A
package com.dongguo.concurrent.lock;
import java.util.concurrent.locks.Condition;
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;
/**
* @author Dongguo
* @date 2021/9/3 0003-15:01
* @description:
*/
public class ThreadOrderAccessDemo {
public static void main(String[] args) {
ShareResource shareResource = new ShareResource();
new Thread(() -> {
for (int i = 1; i {
for (int i = 1; i {
for (int i = 1; i
关注
打赏