Кажется, вы реализуете ленивую инициализацию connectButton
. Это, вероятно, хорошо, хотя, я бы сделал это так:
private void createButton() {
connectButton = new JButton(new AbstractAction("Connect") {
public void actionPerformed(ActionEvent e) {
// actionPerformed code goes here
}
});
connectButton.setText("Connect");
// Rely on some LayoutManager!
//connectButton.setSize(new Dimension(81, 16));
//connectButton.setLocation(new Point(410, 5));
}
private synchronized JButton getConnectButton() {
if (connectButton == null)
createButton();
return connectButton;
}
Обратите внимание на использование synchronized
. Это гарантирует, что не произойдет следующий сценарий:
- Поток 1 вызывает getConnectButton () и видит
connectButton == null
- Поток 2 вызывает getConnectButton () и видит
connectButton == null
- Тема 1 вызывает createButton
- Поток 2 вызывает createButton.
Возможно, есть более приятные способы синхронизации конструкции кнопок, но это один из способов.