java - 如何在java中跟踪和实现嵌套Runnable的取消选项
问题描述
我正在开发一个ZMQ
用于处理请求的 Java 应用程序。我的代码有一些嵌套Runnable
,如下结构:
private class SomeRunnable implements Runnable {
@Override
public void run() {
while (!stop) {
try {
createProcess();
}
catch (Exception e) {
//handled
}
}
}
}
public void createProcess(){
ZMsg receivedRequest = receiveReq(); // wait for request
Runnable workerRunnable = new WorkerRunnable(receivedRequest, this);
Thread workerThread = new Thread(workerRunnable);
workerThread.start();
}
因此,每次我使用 发送请求时Fiddler
,它都会创建新请求并将请求WorkerRunnable
传递zmq
给它以进行进一步处理。此 WorkerRunnable 定义为:
private class WorkerRunnable implements Runnable {
@Override
public void run() {
try {
// do something with received request
switch(type) :
case EXECUTE:
startExecution(); // this will internally create one more thread
break;
case STOP:
stopExecution();
break;
}
catch (Exception e) {
//handled
}
}
}
}
这是非常简单的工作流程:
我提出了一个使用
fiddler
来执行某些东西的请求。它将创建一个 WorkerRunnable。在下一个请求中,我想停止
WorkerRunnable
在步骤 1 中启动。
可能会发生我提出了多个请求,然后其中我想停止任何一个请求。如何跟踪所有 WorkerRunnable 以及在请求停止它们时如何中断它们?我试过ExecutorService
但没有找到在这种情况下使用它的任何确切方法。请提出正确的方法来做到这一点。
解决方案
推荐阅读
- c - 当我输入时加法程序崩溃
- xaml - UWPCommunityToolkit DropShadowPanel 防止网格拉伸
- javascript - 谷歌地图 infoWindow 按钮(离子)问题
- python - numpy nan 结果中没有 nan 值
- c# - 在 ScrollViewer - WPF 中绑定动态创建的控件
- c# - 多态结果的 JSON 反序列化
- apache-flink - 看起来像 CEP 示例的 flink-training-exercises 中的错误
- flask - 实例不显示在模板
- apache-spark - Fargate 上的 Spark 找不到本地 IP
- html - 由边框分隔的 2 个 div