[Java] Что делает SwingUtilities.invokeLater?


Answers

Он будет запускать кусок кода в AWT-потоке. Это позволяет вам изменять графический интерфейс из других потоков.

Из Docs :

Заставляет doRun.run () выполняться асинхронно в потоке диспетчеризации событий AWT. Это произойдет после того, как все ожидающие события AWT будут обработаны. Этот метод следует использовать, когда поток приложений должен обновлять графический интерфейс.

Question

На этот вопрос уже есть ответ:

Что делает SwingUtilities.invokeLater ? Это просто задержка выполнения кода кода внутри его метода run ? В чем разница между вызовом действия в функции invokeLater или просто вызовом его в конце потока, который мы хотим выполнить? Может ли кто-нибудь помочь мне с тем, что действительно делает функция invokeLater ?




Как уже отмечалось, InvokeLater позволяет безопасно вызывать методы в классах swing, когда вы не запускаете EventQueue для начала. Однако вы можете упростить свой код и свою жизнь, обратившись к другим полям и классам только из EventQueue. Они могут работать с качелями и друг с другом без всяких проблем многопоточности. Если вы запустили другой поток, используйте InvokeLater, чтобы как можно быстрее вернуться к EventQueue и свести к минимуму количество полей, которые должны быть синхронизированы или иным образом защищены.

Если вам нужно использовать максимум из нескольких ядер, вам придется сократить использование EventQueue, и вам придется заплатить большую цену по сложности.




Links