在 GUI 应用程序中,当我必须进行大量数据操作(访问数据库)时,我会创建一个线程来打开加载对话框,并在处理结束时关闭此对话框。但是,如果“加载”对话框关闭,我希望此处理被中断。今天,即使加载对话框关闭,它也会打开下一个视图。
我怎样才能做到这一点?while(run){} 不适用,因为它只运行一次然后线程退出。中断也不起作用,因为我没有任何阻塞方法。
在 GUI 应用程序中,当我必须进行大量数据操作(访问数据库)时,我会创建一个线程来打开加载对话框,并在处理结束时关闭此对话框。但是,如果“加载”对话框关闭,我希望此处理被中断。今天,即使加载对话框关闭,它也会打开下一个视图。
我怎样才能做到这一点?while(run){} 不适用,因为它只运行一次然后线程退出。中断也不起作用,因为我没有任何阻塞方法。
中断也不起作用,因为我没有任何阻塞方法。
我想你会做类似的事情:
while(resultSet.hasNext()) {
//do something
}
您可以将其更改为:
while(resultSet.hasNext()) {
if (Thread.currentThread.isInterrupted()) break;
//do something
}
当您中断正在运行的线程时,您的任务现在将退出。
在您的对话框关闭事件中使用myThread.interrupt()
,这将导致所有等待的东西(睡眠、等待、阻塞 ios)停止。如果可能的话,在你的代码中添加一些检查if (Thread.currentThread.isInterrupted())
。