mav*_*rik 8 java executorservice
我在我的Java应用程序中实现了订阅.添加新订户时,应用程序会创建新任务(实现Runnable在单独的线程中运行的类)并将其添加到以下内容中ExecutorService:
public void Subscribe()
{
es_.execute(new Subscriber(this, queueName, handler));
}
//...
private ExecutorService es_;
Run Code Online (Sandbox Code Playgroud)
应用程序可以根据需要注册多个订阅者.现在我希望实现类似的东西Unsubscribe,每个订阅者都有能力停止消息流.在这里,我需要一种方法来阻止其中一个任务运行ExecutorService.但我不知道怎么做到这一点.
它ExecutorService.shutdown()和它的变化不适合我:它们终止所有任务,我想终止它们中的一个.我正在寻找解决方案.尽可能简单.谢谢.
Avi*_*gal 10
您可以使用ExecutorService#submit代替execute并使用返回的Future对象尝试使用Future#cancel取消任务
示例(假设Subscriber是a Runnable):
Future<?> future = es_.submit(new Subscriber(this, queueName, handler));
...
future.cancel(true); // true to interrupt if running
Run Code Online (Sandbox Code Playgroud)
评论中的重要说明:
If your task doesn't honour interrupts and it has already started, it will run to completion.
| 归档时间: |
|
| 查看次数: |
14647 次 |
| 最近记录: |