public class Privider_Comsumer {
public static void main(String[] args) {
Data data = new Data();
new Thread(()->{
try {
while(true){
data.increment();
}
} catch (InterruptedException e) {
e.printStackTrace();
}
},"A").start();
new Thread(()->{
try {
while(true) {
data.decrement();
}
} catch (InterruptedException e) {
e.printStackTrace();
}
},"B").start();
}
}
class Data{
private int number = 0;
public synchronized void increment() throws InterruptedException {
while(number >= 10){
this.wait();
}
number++;
System.out.println(Thread.currentThread().getName()+ this.number);
this.notifyAll();
}
public synchronized void decrement() throws InterruptedException {
while(number < 1){
this.wait();
}
number--;
System.out.println(Thread.currentThread().getName()+this.number);
this.notifyAll();
}
}
生产者消费者模式
最新推荐文章于 2024-09-14 18:46:05 发布
该博客展示了如何在Java中使用synchronized关键字实现两个线程(A和B)对共享变量(number)进行安全的增量和减量操作。当number大于10时,线程A执行increment操作,而线程B执行decrement操作,确保了线程安全和资源的正确同步。
摘要由CSDN通过智能技术生成