第6 章 : 多线程综合案例
23 数字加减
4个线程,2个线程加,2个线程减 循环出现 加一个,减一个
// 资源
class Resource {
private int count = 0;
// 为false可以增加,加完了设置为true,
// 为true可以减少,减完了设置为false
private boolean flag = false;
public synchronized void add() {
if (this.flag == true) {
try {
super.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
this.count++;
System.out.println(Thread.currentThread().getName() + " count=" + count);
this.flag = true;
super.notifyAll();
}
public synchronized void sub() {
if (this.flag == false) {
System.out.println(this.flag);
try {
super.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
this.count--;
System.out.println(Thread.currentThread().getName() + " count=" + count);
this.flag = false;
super.notifyAll();
}
}
// 加法线程
class AddThread implements Runnable {
private Resource resource;
public AddThread(Resource resource) {
this.resource = resource;
}
@Override
public void run() {
for (int i = 0; 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脚手架写一个简单的页面?