public interface SecondaryLoop
实现此接口的对象与EventQueue.createSecondaryLoop()
方法创建。该接口提供了两个方法,enter()
和exit()
,可用于启动和停止事件循环。
当enter()
方法被调用时,当前线程被阻塞直到环是由exit()
方法终止。此外,一个新的事件循环开始于事件调度线程,它可能或可能不是当前线程。环可以终止任何线程通过调用它的exit()
方法。在循环终止,该SecondaryLoop
对象可以运行一个新的嵌套循环事件。
一个典型的应用这一接口的用途是AWT和Swing模态对话框。当在事件调度线程上显示一个模态对话框时,它进入一个新的二次回路。稍后,当对话框被隐藏或设置时,它退出循环,线程继续执行它。
下面的例子说明了一个简单的用例的二次循环:
secondaryloop环;JButton JButton =新JButton(“按钮”);JButton。addactionlistener(新actionlistener() {@Override
public void actionPerformed(ActionEvent e){TK=getdefaulttoolkit()工具包工具包;getsystemeventqueue() EventQueue情商= TK;环式createsecondaryloop();做一个新的线程来完成这一工作线工人=新workerthread();start()工人;输入要阻止当前事件的循环/ /处理程序,但离开用户界面响应如果(!enter()){循环。/报告一个错误}}});类创建工作者线程3.线程{@Override
run() { public void/执行计算dosomethinguseful();/退出循环exit()环;}}
Dialog.show()
,
EventQueue.createSecondaryLoop()
,
Toolkit.getSystemEventQueue()
boolean enter()
此方法可以调用任何线程,包括事件调度线程。该线程将被阻塞直到exit()
方法被调用或循环终止。在两种情况下的事件调度线程上创建一个新的二次循环。
此方法只能在每个对象的时间启动一个新的事件循环。如果一次事件循环已经开始通过这个对象是目前仍在运行,此方法返回false
表明它是不成功的一个新的事件循环开始。否则,此方法阻塞调用线程,后来返回true
当新的事件循环终止。在这样的时候,这个对象可以再次被用来启动另一个新的事件循环。
true
,如果二回路是开始的这个电话,
false
否则
Submit a bug or feature
For further API reference and developer documentation, see Java SE Documentation. That documentation contains more detailed, developer-targeted descriptions, with conceptual overviews, definitions of terms, workarounds, and working code examples.
Copyright © 1993, 2014, Oracle and/or its affiliates. All rights reserved.