0

使用线程的 GUI 编程中侦听器的机制是什么。例如,当 GUI 运行时,ActionListener/actionPerformed 方法中是否涉及任何线程?这些线程(如果它们确实存在)对任何用户定义的线程有什么影响?它们会改变用户定义线程的行为吗?

4

3 回答 3

2

使用线程的 GUI 编程中侦听器的机制是什么。例如,当 GUI 运行时,ActionListener/actionPerformed 方法中是否涉及任何线程?

对于直接的 ActionListener,只涉及一个线程,即事件调度线程或 EDT,它是主要的 Swing 事件线程。这个单一线程负责所有 Swing 图形和用户交互,大多数 Swing 方法调用都需要在这个线程上进行(除非 API 声明它们是线程安全的)。

至于你剩下的问题,

这些线程(如果它们确实存在)对任何用户定义的线程有什么影响?它们会改变用户定义线程的行为吗?

老实说,我不知道你在问什么。在 Swing GUI 程序中可能会使用其他线程,实际上在某些情况下需要它们,但是在使用时,编码人员必须注意确保大多数来自这些后台线程的 Swing 调用都是在 Event 线程上进行的。

您能否澄清一下您对什么感到困惑或导致这个问题的原因是什么?

于 2012-07-29T20:16:56.410 回答
2

整个 Swing 中只涉及一个线程,那就是 Event Dispatch Thread。与许多其他 GUI 框架一样,Swing 是单线程的。

于 2012-07-29T20:18:47.820 回答
2

唯一应该与 GUI 侦听器相关的线程是事件调度线程

至于它们是否影响任何集合定义的线程,EDT 不会,除非你给你的听众写了其他的,否则听众也不应该

于 2012-07-29T20:19:47.407 回答