首页 > 科技 >

🌟Java实现PV操作:生产者与消费者🌟

发布时间:2025-04-01 01:55:13来源:

在多线程编程中,生产者-消费者模型是一个经典问题。它描述了两个或多个线程共享资源的场景:一个线程负责生产数据(生产者),另一个线程负责消费数据(消费者)。为了协调两者,我们通常会用到信号量(Semaphore)来模拟PV操作。

首先,定义一个缓冲区作为共享资源。生产者线程不断向缓冲区添加数据,而消费者线程则从缓冲区取出数据。通过`acquire()`和`release()`方法模拟P操作和V操作,确保生产者不会在缓冲区满时继续生产,消费者也不会在缓冲区空时尝试消费。

```java

import java.util.concurrent.Semaphore;

class PC {

private final Semaphore empty;

private final Semaphore full;

private final int capacity;

private int count = 0;

public PC(int cap) {

this.capacity = cap;

this.empty = new Semaphore(cap);

this.full = new Semaphore(0);

}

public void produce() throws InterruptedException {

empty.acquire();

synchronized (this) {

count++;

System.out.println("Produced: " + count);

}

full.release();

}

public void consume() throws InterruptedException {

full.acquire();

synchronized (this) {

count--;

System.out.println("Consumed: " + count);

}

empty.release();

}

}

```

通过这种方式,我们可以高效地管理多线程间的协作,避免资源竞争问题。✨

免责声明:本答案或内容为用户上传,不代表本网观点。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。 如遇侵权请及时联系本站删除。