Java のメイン スレッドと UI スレッド
Swing アプリケーションを開発する場合、メイン メソッドから SwingUtilities#invokeLater を利用するコード スニペットが発生することがあります。 UIを作成します。ただし、Swing の公式ドキュメントでは、メイン スレッドから UI を作成するのが安全であると示唆されています。
この矛盾により、SwingUtilities#invokeLater を通じてメイン スレッドで UI を構築する真の理由があるのか、それとも他の場合の使用方法と一貫性を保つのは単に良い習慣なのでしょうか?
答えは、Java Concurrency in Practice で説明され、裏付けられている「Swing シングルスレッド ルール」にあります。他の情報源によると。このルールは、Swing コンポーネントとモデルは、イベントディスパッチ スレッドからのみ作成、変更、またはクエリできるようにすることを義務付けています。このルールから逸脱すると、コンポーネントやモデルはこのルールに準拠していると想定されることが多いため、構築、変更、またはクエリを実行するときに信頼性の低い動作につながる可能性があります。
正しく機能しているように見えるコードでも、Swing が異なる環境では不可解なエラーを示す可能性があります。シングルスレッドルールに違反しています。適切に使用できるようにするには、参照ソースで提供されているガイドラインに照らしてコードを検証してください。
以上がSwing アプリケーションで UI を作成するときに、メイン スレッドから SwingUtilities#invokeLater を使用するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。