gpt4 book ai didi

java - 如何使用消息传递编写生产者-消费者解决方案?

转载 作者:行者123 更新时间:2023-12-01 15:27:06 25 4
gpt4 key购买 nike

我找到了下一个代码:

public static void main(String args[]) {
Producer producer = new Producer();
producer.start();
new Consumer(producer).start();
}
}
class Producer extends Thread {
static final int MAXQUEUE = 5;
private Vector<String> messages = new Vector<String>();

public void run() {
try {
while (true) {
putMessage();
sleep(1000);
}
} catch (InterruptedException e) {
}
}

private synchronized void putMessage() throws InterruptedException {

while (messages.size() == MAXQUEUE)
wait();
messages.addElement(new java.util.Date().toString());
notify();
}

public synchronized String getMessage() throws InterruptedException {
notify();
while (messages.size() == 0)
wait();
String message = (String) messages.firstElement();
messages.removeElement(message);
return message;
}
}

class Consumer extends Thread {
Producer producer;

Consumer(Producer p) {
producer = p;
}

public void run() {
try {
while (true) {
String message = producer.getMessage();
System.out.println("Got message: " + message);
sleep(2000);
}
} catch (InterruptedException e) {
}
}

据我了解,消息传递 - 只是不使用共享资源,而是像上面示例中那样使用从一个对象到另一个对象的引用来进行通信。我对吗?

最佳答案

如果您关注Publish/Subscribe pattern那么您需要一条消息 queue某种程度的。 Producer将消息放入队列,Consumer读取队列中的消息。

消息传递的要点是您的生产者/消费者不必直接相互引用,而只需通过队列进行通信。

关于java - 如何使用消息传递编写生产者-消费者解决方案?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10027118/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com