Я недавно начал изучать и изучать основы программирования GUI на Java.
Программируя какое-то время, я только выполнял бэкэнд-работу или работу, и, в результате, ближе всего к этому я привыкПользовательские интерфейсы - это командная консоль (смущает, я знаю).
Я использую Swing и насколько я могу понять, что это означает, что по расширению я также использую AWT.
Мой вопрос основанна этом фрагменте кода:
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new frame.setVisible(true);
}
} );
Я изучал это некоторое время, поскольку хотел полностью понять этот странный фрагмент кода и несколько раз сталкивался с термином «поток обработки событий».Поправь меня, если я не прав, но насколько я понимаю;это связано с использованием нескольких потоков и с тем, как Java Swing интерпретирует эти потоки.Я также понял, что приведенный выше код используется для того, чтобы убедиться, что все потоки «безопасны», прежде чем он создаст окно, поэтому invokeLater?
Я прочитал, что:
«Вы можете вызывать методы, которые работают с кадром, только из потока диспетчеризации событий»
и что только при определенных обстоятельствах вы можете вызывать методы, которые работают с кадром, из основного метода.
Может кто-нибудь уточнить, что именно представляет собой поток диспетчеризации событий?
Как это связано с несколькими потоками выполнения и как эти потоки не являютсябезопасно вызываться из основного метода?Кроме того, зачем нам этот invokeLater?
Разве мы не можем просто создать окно, как любой другой объект?
Я немного натолкнулсяблокировать в моих исследованиях, так как я не понимаю эти отношения и идеи.
Дополнительное замечание: мне нравится основывать свои знания на глубоком понимании, поскольку я считаю, что это приводит к наилучшему общему результату и какприведите лучшие программы.Если я глубоко понимаю, как что-то работает, тогда вы можете эффективно использовать советы и настройки, а не просто повторять их в коде, поэтому, пожалуйста, не бойтесь давать мне дополнительные подробные объяснения и расширять мои знания.
Спасибо.