0

在 GUI 应用程序中,当我必须进行大量数据操作(访问数据库)时,我会创建一个线程来打开加载对话框,并在处理结束时关闭此对话框。但是,如果“加载”对话框关闭,我希望此处理被中断。今天,即使加载对话框关闭,它也会打开下一个视图。

我怎样才能做到这一点?while(run){} 不适用,因为它只运行一次然后线程退出。中断也不起作用,因为我没有任何阻塞方法。

4

2 回答 2

3

中断也不起作用,因为我没有任何阻塞方法。

我想你会做类似的事情:

while(resultSet.hasNext()) {
    //do something
}

您可以将其更改为:

while(resultSet.hasNext()) {
    if (Thread.currentThread.isInterrupted()) break;
    //do something
}

当您中断正在运行的线程时,您的任务现在将退出。

于 2013-06-12T14:21:21.477 回答
0

在您的对话框关闭事件中使用myThread.interrupt(),这将导致所有等待的东西(睡眠、等待、阻塞 ios)停止。如果可能的话,在你的代码中添加一些检查if (Thread.currentThread.isInterrupted())

于 2013-06-12T14:25:23.107 回答