如何关闭一个swingworker线程?
来源:互联网 发布:mac系统重装教程 u盘 编辑:程序博客网 时间:2024/05/16 10:56
如题,一般程序中利用swingworker启动一个线程都是直接用匿名方法直接
new swingworker<void,void>(){
protected Void doInBackground() throws Exception {
while(true){
内容。。。
}
}
}.execute();
一般都是这样的,而且一次根据需要可能会new出N个线程来,全都是匿名的,那么我现在在窗口dispose()后关闭所有正在运行的线程,该怎么写呢?
对swingworker我表示真心就知道这些,里头还好多方法都不知道怎么用,做什么用
private SwingWorker<Void, Void> worker;
// somewhere in EDT
worker = new StringWorker<Void, Void>() {
... ...
};
worker.execute();
...
// somewhere else in EDT
if( worker != null ) worker.cancel(true);
// somewhere in EDT
worker = new StringWorker<Void, Void>() {
... ...
};
worker.execute();
...
// somewhere else in EDT
if( worker != null ) worker.cancel(true);
如果你在一个 SwingWorker 里只用到了 doInBackground 方法
那和一个普通的 Thread 是没有区别的
当你需要更新界面的时候,应该调用 publish 方法,通知 process 方法处理相关的界面更新
API 里写的很清楚
SwingWorker 的生命周期中包含三个线程:
当前 线程:在此线程上调用 execute() 方法。
Worker 线程:在此线程上调用 doInBackground() 方法。所有后台活动都应该在此线程上发生。
事件指派线程:所有与 Swing 有关的活动都在此线程上发生。SwingWorker 调用 process 和 done() 方法。
你要强行结束一个 SwingWorker 可以用 cancel 方法
那和一个普通的 Thread 是没有区别的
当你需要更新界面的时候,应该调用 publish 方法,通知 process 方法处理相关的界面更新
API 里写的很清楚
SwingWorker 的生命周期中包含三个线程:
当前 线程:在此线程上调用 execute() 方法。
Worker 线程:在此线程上调用 doInBackground() 方法。所有后台活动都应该在此线程上发生。
事件指派线程:所有与 Swing 有关的活动都在此线程上发生。SwingWorker 调用 process 和 done() 方法。
你要强行结束一个 SwingWorker 可以用 cancel 方法
- 如何关闭一个swingworker线程?
- java如何关闭一个线程
- 如何优雅的关闭一个线程
- 【Java线程】SwingWorker的用法
- java线程swingworker的运用
- 【JAVA线程】SwingWorker的用法
- 【Java线程】SwingWorker的用法
- Android 关闭一个线程
- 线程如何关闭测试
- 如何关闭java线程
- SwingWorker的一个小例子
- SwingWorker
- SwingWorker
- SwingWorker
- Swing线程--工作者线程和SwingWorker
- 如何关闭一个view
- 关闭应用程序时如何关闭子线程
- 关闭应用程序时如何关闭子线程
- 新手写OFBiz的HelloWorld
- Intellij IDEA 自动生成 serialVersionUID
- Java中static、final用法小结
- ABAP总结-转载,好全啊
- 利用隐私循环
- 如何关闭一个swingworker线程?
- 《windows程序设计》第三章学习心得
- 第五章-GPIO接口
- 银联在线Java接口开发
- PHP取多个不重复的随机数
- PHP获取文件目录dirname(__FILE__),getcwd(),
- Android之使用Android-query框架进行开发(二)
- 对象内存布局
- 免费的jquery-CDN加速点