这是我要解决的情况:用户可以发送多个请求进行计算,该请求应存储在列表或队列中(列表/队列应动态处理/保存这些请求),然后一个接一个地请求应该是过程。 第一个请求的执行完成后,它将处理下一个请求。
在当前情况下,我们正在通过以下方式进行操作:
@Override
public void execute(req) {
synchronized (pendingRequestList) {
pendingRequestList.add(req);
pendingRequestList.notifyAll();
}
}
@Override
public void run() {
while (true) {
synchronized (pendingRequestList) {
try {
if (pendingRequestList.size() == 0) {
logger.debug("Waiting for new request ... ");
pendingRequestList.wait();
}
}
catch (InterruptedException e1) {
e1.printStackTrace();
return;
}
}
}
// Perform execution synchronously
在这种情况下,如果我发出多个请求,则只有一个将执行,其余的将过期。我想让所有请求在某个列表中等待,直到一个列表的执行完成。
建议一种方法来维护pendingRequestList
方法中execute()
中所有请求,然后从run()
中的列表中逐一执行。
我尝试了以下选项,但没有获得实现上述目标的确切方法:
我也想取消选项,但主要是要在所有请求进入某种数据结构时保持所有请求,并一一执行。我正在使用ZMQ和提琴手发布请求。