假设我有一个 SwingWorker 对象,它仍在其 doInBackground() 方法中。如果用户调用 system.exit(0)...如何最好地确保 SwingWorker 守护程序/工作线程完成?我想我必须手动执行此操作。我目前最好的想法是在调用 System.exit(0) 的同一线程中/上的所有杰出工作线程上调用 join() ...这是正确的吗?
并且,如果使用 join() 是个好主意...如果调用 join() 的线程具有虚假活动,我应该在某种 while 循环中使用它吗?
例如:
//伪代码
Vector<Thread> threadsThatMustFinishBeforeTerminatingJVM = new Vector<Thread>();
Thread closingThread = new Thread(){
public void run(){
for(Thread t: threadsThatMustFinishBeforeTerminatingJVM){
// closingThread waits for t to finish, (is this *really* safe?)
t.join();
}
System.exit(0);
}
}
closingThread.start();
这完全正确吗?