Java 在使用线程的GUI编程中,侦听器的机制是什么?

Java 在使用线程的GUI编程中,侦听器的机制是什么?,java,user-interface,listener,actionlistener,Java,User Interface,Listener,Actionlistener,在使用线程的GUI编程中,侦听器的机制是什么。例如,当GUI运行时,ActionListener/actionPerformed方法是否涉及任何线程?这些线程(如果它们确实存在)对任何用户定义的线程有什么影响?它们会改变用户定义线程的行为吗 在使用线程的GUI编程中,侦听器的机制是什么。例如,当GUI运行时,ActionListener/actionPerformed方法是否涉及任何线程 对于直接的ActionListener,只涉及一个线程,即主Swing事件线程或EDT。这个单一线程负责所有

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

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

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

至于你剩下的问题

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

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

你能澄清一下你对什么感到困惑,或者是什么导致了这个问题吗

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

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

至于你剩下的问题

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

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


您能澄清一下您到底对什么感到困惑,或者是什么导致了这个问题吗?

整个Swing中只涉及一个线程,那就是事件分派线程。和其他许多GUI框架一样,Swing是单线程的。

整个Swing中只涉及一个线程,即事件调度线程。Swing和许多其他GUI框架一样,是单线程的。

GUI侦听器应该涉及的唯一线程是


至于它们是否会影响任何一组定义的线程,EDT不会,除非您让编写的侦听器执行其他操作,否则侦听器也不应该影响,GUI侦听器应该涉及的唯一线程是


至于它们是否会影响任何一组定义的线程,EDT不会,除非你让你的监听器去做,否则监听器也不应该这样做。我的问题是,正如你刚才所说,只涉及一个线程,那就是EDT。现在,如果我定义自己的线程,对我的线程b/c EDT有影响吗?或者它们可以完美地并排工作?@MohamedMagdyHassan:它的工作原理与任何两个单独的线程的工作原理相同。线程的工作方式在这里没有什么不同。再说一遍,是什么引发了这个问题?实际上这是一个家庭作业问题,我找了好几个星期都没有找到答案@MohamedMagdyHassan:也许是因为“两条线如何一起工作”这个问题仍然很模糊。如果这正是给你的问题,那么老师就要记过,因为这是一个可怕的问题。从内存来看,在Winows上,在Java 6下,EDT的优先级比NORM略高。这可能会对调度(谁开始运行&何时运行)产生轻微影响,但正如HoverCraftfullOfels所述,EDT只是另一个线程,受与所有Java线程相同的规则控制。我的问题是,正如您刚才所说,只涉及一个线程,即EDT。现在,如果我定义自己的线程,对我的线程b/c EDT有影响吗?或者它们可以完美地并排工作?@MohamedMagdyHassan:它的工作原理与任何两个单独的线程的工作原理相同。线程的工作方式在这里没有什么不同。再说一遍,是什么引发了这个问题?实际上这是一个家庭作业问题,我找了好几个星期都没有找到答案@MohamedMagdyHassan:也许是因为“两条线如何一起工作”这个问题仍然很模糊。如果这正是给你的问题,那么老师就要记过,因为这是一个可怕的问题。从内存来看,在Winows上,在Java 6下,EDT的优先级比NORM略高。这可能会对调度(谁何时开始运行)产生轻微影响,但正如HovercraftFullOfEels所述,EDT只是另一个线程,受与所有Java线程相同的规则控制