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来实现同样的目的。