文档

Java™ 教程
隐藏目录
取消后台任务
指南:使用Swing创建GUI
课程:Swing中的并发
章节:工作线程和SwingWorker

取消后台任务

要取消正在运行的后台任务,请调用SwingWorker.cancel方法。该任务必须与自己的取消协作。它有两种方法可以实现:

cancel方法接受一个boolean参数。如果参数为truecancel发送中断信号给后台任务。无论参数是true还是false,调用cancel都会将对象的取消状态更改为true。这是由isCancelled返回的值。一旦更改,取消状态就不能再更改回来。

前一节的Flipper示例使用了只有状态的方法。在doInBackground中的主循环在isCancelled返回true时退出。当用户点击“取消”按钮时,触发的代码将以false参数调用cancel

对于Flipper来说,只有状态的方法是有意义的,因为它的SwingWorker.doInBackground实现不包含可能抛出InterruptedException的代码。要响应中断,后台任务必须在短时间间隔内调用Thread.isInterrupted。同样可以使用SwingWorker.isCancelled来实现同样的目的。


注意:如果在取消后台任务后对SwingWorker对象调用get,将抛出java.util.concurrent.CancellationException异常。

上一页: 有中间结果的任务
下一页: 绑定属性和状态方法