У меня есть следующая Java-программа, которая запускается примерно в 50% всех попыток запуска.В остальное время он заходит в тупик на заднем плане без отображения графического интерфейса.Я проследил проблему до метода setText объекта JTextArea.Использование другого класса, такого как JButton, работает с setText, но JTextArea блокируется.Может кто-нибудь объяснить мне, почему это происходит и что не так со следующим кодом:
public class TestDeadlock extends JPanel {
private JTextArea text;
TestDeadlock(){
text = new JTextArea("Test");
add(text);
updateGui();
}
public static void main(String[] args){
JFrame window = new JFrame();
window.setTitle("Deadlock");
window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
window.add(new TestDeadlock());
window.pack();
window.setVisible(true);
}
public synchronized void updateGui(){
SwingUtilities.invokeLater(new Runnable(){
public void run(){
System.out.println("Here");
text.setText("Works");
System.out.println("Not Here");
}
});
}
}