当前位置:网站首页>多线程打印ABC(继承+进阶)
多线程打印ABC(继承+进阶)
2022-08-03 05:41:00 【是小鱼儿哈】
基础

进阶

public class Demo {
private static Object locker1 = new Object();
private static Object locker2 = new Object();
private static Object locker3 = new Object();
public static void main(String[] args) throws InterruptedException {
Thread t1 = new Thread(() -> {
try {
for (int i = 0; i < 10; i++) {
synchronized (locker1) {
locker1.wait();
}
System.out.print("A");
synchronized (locker2) {
locker2.notify();
}
}
} catch (InterruptedException e) {
e.printStackTrace();
}
});
Thread t2 = new Thread(() -> {
try {
for (int i = 0; i < 10; i++) {
synchronized (locker2) {
locker2.wait();
}
System.out.print("B");
synchronized (locker3) {
locker3.notify();
}
}
} catch (InterruptedException e) {
e.printStackTrace();
}
});
Thread t3 = new Thread(() -> {
try {
for (int i = 0; i < 10; i++) {
synchronized (locker3) {
locker3.wait();
}
System.out.println("C");
synchronized (locker1) {
locker1.notify();
}
}
} catch (InterruptedException e) {
e.printStackTrace();
}
});
t1.start();
t2.start();
t3.start();
Thread.sleep(1000);
// 从线程 t1 启动
synchronized (locker1) {
locker1.notify();
}
}
}边栏推荐
猜你喜欢
随机推荐
【RT_Thread学习笔记】---以太网LAN8720A Lwip ping 通网络
spark中Repartition 和 Coalesce 区别
【干货分享】PCB 板变形原因!不看不知道
2021新版idea过滤无用文件.idea .iml
Scala 基础 (三):运算符和流程控制
VO、DTO、DO、POJO的区别和概念
MySQL的触发器
502 bad gateway原因、解决方法
【OpenStack云平台】搭建openstack云平台
Multi-Head-Attention principle and code implementation
pyspark---对suuid区间编码(基于曝光数、点击数)
cookie和session区别
Sqoop 导入导出 Null 存储一致性问题
你真的了解volatile关键字吗?
PHP 获取服务器信息
ClickHouse 数据插入、更新与删除操作 SQL
Nacos下载与安装
nvm 卸载详细流程
【云原生 · Kubernetes】Kubernetes简介及基本组件
DIFM网络详解及复现








