词条 | 事件派发线程 |
释义 | 事件派发线程(Event Dispatch Thread) 事件派发线程是一个用来执行组件事件处理程序的线程(如按钮的点击事件),它是一个队列,所以它的特点是一定要执行完上一个事件的处理程序后,才会处理下一个事件。事件派发线中的方法应该执行很快(一般用来更新组件的状态), 不然界面就会死掉, 所以如果有很耗时的操作,最好另起一线程执行,而不应该直接放在事件派发线程中。 1.Swing的大部分组件是非线程安全的, 只能用单线程(Swing专门提供了事件派发线程)访问,一旦其在界面上relized以后,为了保证其正确性,对其组件的操作和状态的改变都应该在事件派发线程中执行。 2.引起组件realized的方法有pack(),setVisable(true)以及show()。 3.事件监听器的方法都是在事件派发线程中执行的,如ActionListener的 actionPerformed方法。 4.如果对组件的操作或状态的改变不是在事件派发线程中执行,那么应该用SwingUtilities.invokeLater inovkeAndWait方法,使其在事件派发线程中执行。 5.invokeLater是异步方法,在方法还没执行完就返回, 而inovkeAndWait是同步方法,要等方法执行完后再返回.而且在任何线程中调用invokeLater都不会异常,而在事件派发线程中调用inovkeAndWait会抛出异常, 如果在调用线程与invokeLater或inovkeAndWait方法中的线程有顺序关系,可以使用inovkeAndWait,若没有推荐使用invokeLater。因为inovkeAndWait将会带来一个产生死锁的必要条件--等待运行(意思就是调用线程要等到被调线程结束后才能运行). |
随便看 |
百科全书收录4421916条中文百科知识,基本涵盖了大多数领域的百科知识,是一部内容开放、自由的电子版百科全书。