【发布时间】:2014-03-14 00:57:08
【问题描述】:
所以我目前正在从 Executer 运行 3 个 SwingWorker:
- 使用 htmlunit 从网站收集信息,如果添加了新内容,则会在 GUI 的表格中显示并发送给连接的客户端
- 等待客户端连接,如果客户端连接,则将其添加到已连接客户端表中
- 每 10 秒通过向客户端发送数据来检查客户端是否仍处于活动状态,并根据此更新已连接客户端的表
主要问题是,如果其中一个 SwingWorkers 被中断(例如由于某些异常或错误)并结束其他 2 个也应该结束,因为它们单独运行毫无意义。
我将这部分代码添加到每个 SwingWorker 的 done() 函数中:
synchronized(lock)
{
try{
for (int i = 0; i < threads.size(); i++) {
try{
if (threads.get(i)!=null && threads.get(i)!=this){
threads.get(i).cancel(true);
}
} catch (java.lang.NullPointerException ex) {
}
}
} catch (java.lang.NullPointerException ex) {
}
}
threads 是 swingworkers 的数组列表,我应该立即结束
这个解决方案对我有用,但我想知道是否有其他更好的解决方案?
【问题讨论】:
标签: swingworker