Spec-Zone .ru
спецификации, руководства, описания, API
|
public interface SecondaryLoop
Объекты, которые реализуют этот интерфейс, создаются с EventQueue.createSecondaryLoop()
метод. Интерфейс обеспечивает два метода, enter()
и exit()
, который может использоваться, чтобы запустить и остановить цикл события.
Когда enter()
метод вызывают, текущий поток блокируется, пока цикл не завершается exit()
метод. Кроме того, новый цикл события запускается на событии, диспетчеризируют поток, который может или, возможно, не является текущим потоком. Цикл может быть завершен на любом потоке, вызывая exit()
метод. После того, как цикл завершается, SecondaryLoop
объект может быть снова использован, чтобы выполнить новый вложенный цикл события.
Типичный вариант использования применения этого интерфейса является AWT и Swing модальные диалоговые окна. Когда модальное диалоговое окно показывают на событии, диспетчеризируют поток, это вводит новый вторичный цикл. Позже, когда диалоговое окно скрывается или располагается, оно выходит из цикла, и поток продолжает свое выполнение.
Следующий пример иллюстрирует простой вариант использования вторичных циклов:
SecondaryLoop loop; JButton jButton = new JButton("Button"); jButton.addActionListener(new ActionListener() {@Override
public void actionPerformed(ActionEvent e) { Toolkit tk = Toolkit.getDefaultToolkit(); EventQueue eq = tk.getSystemEventQueue(); loop = eq.createSecondaryLoop(); // Spawn a new thread to do the work Thread worker = new WorkerThread(); worker.start(); // Enter the loop to block the current event // handler, but leave UI responsive if (!loop.enter()) { // Report an error } } }); class WorkerThread extends Thread {@Override
public void run() { // Perform calculations doSomethingUseful(); // Exit the loop loop.exit(); } }
Dialog.show()
, EventQueue.createSecondaryLoop()
, Toolkit.getSystemEventQueue()
Модификатор и Тип | Метод и Описание |
---|---|
boolean |
enter()
Блокирует выполнение текущего потока и входит, новый вторичный цикл события на событии диспетчеризируют поток.
|
boolean |
exit()
Разблокирует выполнение потока, блокированного
enter() метод и выходы вторичный цикл. |
boolean enter()
Этот метод может вызвать любой поток включая событие, диспетчеризируют поток. Этот поток будет блокирован до exit()
метод вызывают, или цикл завершается. Новый вторичный цикл будет создаваться на событии, диспетчеризируют поток для того, чтобы диспетчеризировать события в любом случае.
Этот метод может только запустить один новый цикл события за один раз на объект. Если вторичный цикл события был уже запущен этим объектом и в настоящий момент все еще работает, этот метод возвраты false
указать, что это не было успешно в запуске нового цикла события. Иначе, этот метод блокирует вызывающий поток и более поздние возвраты true
когда новый цикл события завершается. В такое время этот объект может снова использоваться, чтобы запустить другой новый цикл события.
true
после завершения вторичного цикла, если вторичный цикл был запущен этим вызовом, false
иначеboolean exit()
enter()
метод и выходы вторичный цикл. Этот метод возобновляет поток который вызванный enter()
метод и выходы вторичный цикл, который создавался когда enter()
метод был вызван.
Отметьте, что, если какой-либо другой вторичный цикл запускается, в то время как этот цикл работает, блокированный поток не будет возобновлять выполнение, пока вложенный цикл не будет завершен.
Если этот вторичный цикл не был запущен с enter()
метод, или этот вторичный цикл уже закончился с exit()
метод, этот метод возвраты false
, иначе true
возвращается.
true
если этот цикл был ранее запущен и еще не был закончен с exit()
метод, false
иначе
Для дальнейшей ссылки API и документации разработчика, см. Java Документация SE. Та документация содержит более подробные, предназначенные разработчиком описания, с концептуальными краткими обзорами, определениями сроков, обходных решений, и рабочих примеров кода.
Авторское право © 1993, 2013, Oracle и/или его филиалы. Все права защищены.
Проект сборка-b92