Mid*_*lue 7 java swing multithreading
我目前正在学习Swing,我是GUI开发的新手.在我的测试应用程序中,我有一个单个事件源的多个事件列表器,我想知道这些事件监听器中的哪一个将首先被激活.
此外,我很想知道Swing事件处理在单线程环境中是如何工作的,尤其是当您有一个事件源的多个侦听器时.
最后,我想知道一些常见的情况,我必须在Swing中使用多个线程.
谢谢!
jjn*_*guy 12
我会尝试回答你的所有3个问题.首先,ActionListener没有指定s fire 的顺序.人们不应该假设他们会触发特定的命令.如果您需要按特定顺序执行操作,请将它们放在相同的位置ActionListener.
编写Swing时,您"几乎"总是处于多线程环境中.有一个称为事件调度线程(EDT)的线程.这是处理所有事件的线程.您执行的任何其他处理应该在不同的线程上完成,否则您的Swing GUI可能会无响应.
Swing中多线程的常见情况是,您需要进行一些需要较长时间的处理.(强烈的计算,IO,数据库连接)您将希望在与EDT的单独线程上进行艰苦的工作.这将使您的GUI保持响应.
Oracle网络在Swing中有一个很好的并发教程.我建议你看看.
Swing程序员处理以下类型的线程:
- 初始线程,执行初始应用程序代码的线程.
- 事件调度线程,执行所有事件处理代码.大多数与Swing框架交互的代码也必须在此线程上执行.
- 工作线程,也称为后台线程,执行耗时的后台任务.
对Swing中任何多线程问题的规范回答是使用a SwingWorker.它允许您在与EDT的单独线程上轻松协调后台工作.像往常一样,Oracle有一个很好的教程如何使用SwingWorker.
| 归档时间: |
|
| 查看次数: |
2252 次 |
| 最近记录: |