码迷,mamicode.com
首页 > 编程语言 > 详细

swing中的线程

时间:2017-04-10 11:35:16      阅读:131      评论:0      收藏:0      [点我收藏+]

标签:event   响应   工作   驱动   turn   需要   统计   ted   run   

1. 初始化线程
初始化线程用于创建各种容器,组件并显示他们,一旦创建并显示,初始化线程的任务就结束了。

2. 事件调度线程(单线程:只有一个线程在负责事件的响应工作。)
通过事件监听的学习,我们了解到Swing是一个事件驱动的模型,所有和事件相关的操作都放是放在事件调度线程 (Event Dispatch)中进行的。
比如点击一个按钮,对应的ActionListener.actionPerformed 方法中的代码,就是在事件调度线程 Event Dispatch Thread中执行的。

3. 长耗时任务线程
有时候需要进行一些长时间的操作,比如访问数据库,文件复制,连接网络,统计文件总数等等。 这些操作就不适合放在事件调度线程中进行,
因为占用时间久了,会让使用者感觉界面响应很卡顿。 为了保持界面响应的流畅性,所有长耗时任务都应该放在专门的 长耗时任务线程中进行
为了解决这个问题,Swing提供了一个SwingWorker类来解决。 SwingWorker是一个抽象类,为了使用,必须实现方法 doInBackground,
在doInBackground中,就可以编写我们的任务,然后执行SwingWorker的execute方法,放在专门的工作线程中去运行。
SwingWorker worker = new SwingWorker() {
protected Object doInBackground() throws Exception {
//长耗时任务
return null;
}
};
worker.execute();


eg: SwingUtilities.invokeLater(new Runnable() {
public void run() {
new TestFrame().setVisible(true);// 这段代码就是在事件调度线程中执行了
}
});

swing中的线程

标签:event   响应   工作   驱动   turn   需要   统计   ted   run   

原文地址:http://www.cnblogs.com/TaoLeonis/p/6687533.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!