Недавно я нашел пример кода:Почему важно использовать invokeLater?
public static void main(String[] args) {
javax.swing.SwingUtilities.invokeLater(new Runnable() {
public void run() {
createAndShowGUI();
}
});
}
createAndShowGUI()
метод открывает окно пользовательского интерфейса. Затем я попытался обрезать код следующим образом:
public static void main(String[] args) {
createAndShowGUI();
}
Обе версии работают одинаково хорошо. В чем разница?
Он работает одинаково хорошо, большую часть времени, но иногда ваш поток графического интерфейса и поток, обновляющий графический интерфейс, вызывают странное и невоспроизводимое поведение. Это проблема с тестированием многопоточного кода, вы можете запустить его в течение нескольких дней и изменить что-то незначительное, и внезапно оно появляется часто. –
Возможный дубликат http://stackoverflow.com/questions/6567870/what-does-swingutilities-invokelater-do – Masudul