如何关闭一个swingworker线程?
2013-04-10 11:11
323 查看
如题,一般程序中利用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);
如果你在一个 SwingWorker 里只用到了 doInBackground 方法
那和一个普通的 Thread 是没有区别的
当你需要更新界面的时候,应该调用 publish 方法,通知 process 方法处理相关的界面更新
API 里写的很清楚
SwingWorker 的生命周期中包含三个线程:
当前 线程:在此线程上调用 execute() 方法。
Worker 线程:在此线程上调用 doInBackground() 方法。所有后台活动都应该在此线程上发生。
事件指派线程:所有与 Swing 有关的活动都在此线程上发生。SwingWorker 调用 process 和 done() 方法。
你要强行结束一个 SwingWorker 可以用 cancel 方法
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);
如果你在一个 SwingWorker 里只用到了 doInBackground 方法
那和一个普通的 Thread 是没有区别的
当你需要更新界面的时候,应该调用 publish 方法,通知 process 方法处理相关的界面更新
API 里写的很清楚
SwingWorker 的生命周期中包含三个线程:
当前 线程:在此线程上调用 execute() 方法。
Worker 线程:在此线程上调用 doInBackground() 方法。所有后台活动都应该在此线程上发生。
事件指派线程:所有与 Swing 有关的活动都在此线程上发生。SwingWorker 调用 process 和 done() 方法。
你要强行结束一个 SwingWorker 可以用 cancel 方法
相关文章推荐
- 如何优雅的关闭一个线程
- Java线程的传说(3)——如何关闭一个正在accept的ServerSocket?
- java如何关闭一个线程
- 如何查看一个进程中的某个线程是否存活?
- 如何将一个进程(线程)绑定到一个固定的CPU核上?——004
- javascript:如何判断一个网页被用户关闭
- 如何优雅地关闭一个socket
- 如何安全的推出一个正在运行的线程
- java程序中,如何安全的结束一个正在运行的线程?
- java中,如何安全的结束一个正在运行的线程?
- 跨线程调用控件时关闭窗体时如何避免出现异常:Cannot access a disposed object.
- Cocos2d-x 3.0 JNI BUG 修复。(Android 如何创建一个线程 延迟执行函数 创建一个随机数)
- C#多线程学习(二) 如何操纵一个线程
- Android开发:如何按back键 彻底的关闭一个应用程序(调用finish()不太奏效)
- 如何在一个进程中启动另外一个线程:ProcessStartInfo Constructor
- 如何判断一个用户是关闭、还是刷新网页
- 如何使一个窗口关闭的同时另一个窗口刷新
- C#多线程学习(二) 如何操纵一个线程
- android 中如何activity如何关闭一个开启自启动的service
- 如何正确的关闭 MFC 线程