Swingのスレッド拘束

GUIオブジェクトの状態の正しさは同期化によってではなく、スレッド拘束によって保たれます
スレッド拘束:データがひとつのスレッドからしかアクセスされない

public static void invokeLater(Runnable doRun)

doRun.run() を、AWT イベントディスパッチスレッドで非同期的に実行させます。これは、保留中のすべての AWT イベントが処理されたあとに発生します。このメソッドは、アプリケーションスレッドが GUI を更新する必要があるときに使用されます。次の例では、invokeLater 呼び出しはイベントディスパッチスレッドに Runnable オブジェクトの doHelloWorld のキューを呼び出してから、メッセージを出力します。