Java教程是针对JDK 8编写的。本页面中描述的示例和实践不利用后续版本中引入的改进,并可能使用不再可用的技术。
有关Java SE 9及其后续版本中更新的语言功能的摘要,请参阅Java语言更改。
有关所有JDK版本的新功能、增强功能以及已删除或弃用选项的信息,请参阅JDK发布说明。
要取消正在运行的后台任务,请调用SwingWorker.cancel
方法。该任务必须与自己的取消协作。它有两种方法可以实现:
SwingWorker.isCancelled
方法。该方法如果cancel
已经为此SwingWorker
调用,则返回true
。cancel
方法接受一个boolean
参数。如果参数为true
,cancel
发送中断信号给后台任务。无论参数是true
还是false
,调用cancel
都会将对象的取消状态更改为true
。这是由isCancelled
返回的值。一旦更改,取消状态就不能再更改回来。
前一节的Flipper
示例使用了只有状态的方法。在doInBackground
中的主循环在isCancelled
返回true
时退出。当用户点击“取消”按钮时,触发的代码将以false
参数调用cancel
。
对于Flipper
来说,只有状态的方法是有意义的,因为它的SwingWorker.doInBackground
实现不包含可能抛出InterruptedException
的代码。要响应中断,后台任务必须在短时间间隔内调用Thread.isInterrupted
。同样可以使用SwingWorker.isCancelled
来实现同样的目的。