【发布时间】:2012-09-01 19:15:49
【问题描述】:
我正在开发一个多线程应用程序来建立与外部服务器的连接 - 每个都在单独的线程上 - 并且在有输入之前将被阻止。这些中的每一个都扩展了 Thread 类。为了便于说明,我们将这些称为“连接线程”。
所有这些连接线程都存储在并发哈希图中。
然后,我允许 RESTful Web 服务方法调用来取消任何线程。 (我使用的是 Grizzly/Jersey,所以每个调用都是一个独立的线程。)
我检索特定的连接线程(从 hashmap 中)并在其上调用 interrupt() 方法。
那么,问题来了,在连接线程中,我如何捕获 InterruptedException? (当连接线程被外部 RESTful 命令停止时,我想做一些事情。)
【问题讨论】:
-
好吧,AFAIK,当线程抛出 InterruptedEx 时。它将传播到启动异常抛出线程的线程。您可以在该父线程上捕获 IE。
-
我刚刚做了一个实验,把启动连接线程的代码包围起来,编译器警告没有抛出InterruptedException。
-
此外,启动这些连接线程的父线程不会进入等待或睡眠状态,因此这意味着(或至少我认为)它在启动所有这些子线程后不再存在.
-
“中断一个不活跃的线程不需要有任何效果”。 @spec JSR-51
标签: java multithreading runnable