gpt4 book ai didi

java - 生产者消费者场景,停止从队列中读取直到执行完成

转载 作者:行者123 更新时间:2023-12-02 13:22:58 25 4
gpt4 key购买 nike

我正在使用 BlockingQueue 实现生产者消费者场景。

这是我的消费者运行方法:

@Override
public void run() {
try {
Message msg;
System.out.println("Consumer started");
//consuming messages until exit message is received

while(!(msg=queue.take()).getMsg().equalsIgnoreCase("exit")) {

//




}
} catch (InterruptedException e) {
e.printStackTrace();
}

当我从队列中取出一些东西时,我打算调用下面的方法,但这里有一个条件。我只想运行此方法的一个实例。我不想从队列中消费,直到我从下面的方法获得返回。

我一直在努力解决如何在 while 循环中包含它的问题。

public boolean runStrategy(String msg) {

ExecutionContext executionContext = new ExecutionContext();

String[] filePathArray = msg.split("/");

String campaignForType = filePathArray[6];// .equals("Profiles")/events etc etc

if (campaignForType.equalsIgnoreCase("Profiles")) {

executionContext.setExecutionStrategy(new ProfileUploadExecutionStrategy());
return executionContext.executeCampaign(filePathArray, msg);

} else if (campaignForType.equalsIgnoreCase("Events")) {

/* executionContext.setExecutionStrategy(new EventExecutionStrategy());
executionContext.executeCampaign(filePathArray, msg.toString());*/

return true;
}

return true;
}

最佳答案

一个非常简单的解决方案:仅启动一个消费者线程。

您最多希望运行该方法的一个实例。或者还有其他情况吗?如果只有一个线程,则只能运行该方法的一个实例。只要该线程繁忙,就没有其他线程可以从队列中消费。

关于java - 生产者消费者场景,停止从队列中读取直到执行完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43494027/

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