最近在项目里一直在用jdesktop的swingworker(已经合入JDK 6),是个不错的swing线程库。今天需要在界面里cancel一个swingworker。研究了一下午,结合swingworker的文档、源代码和自己的代码实验,以下是两种安全cancel一个swingworker的方法
方法一,使用isCancelled:
protected Object doInBackground() throws Exception {
while (!isCancelled()) {
...
}
return null;
}
需要cencel时调用swingworker.cancel(false),不中断线程,只置cancel标记。
方法二,使用sleep:
protected Object doInBackground() throws Exception {
while (running) {
...
sleep(30);
}
return null;
}
需要cencel时调用swingworker.cancel(true),在sleep处中断线程。切记,不需要捕捉sleep抛出的InterruptedException,swingworker会处理该异常。
-- EOF --
除非注明(如“转载”、“[zz]”等),本博文章皆为原创内容,转载时请注明: 「转载自程序员的信仰©」
本文链接地址:如何cancel一个swingworker
Today on history:
【2009】北航你已经被评为退步最快的10所大学了,你要是再不重视本科生你就完了 [zz]
发表回复