IntelliJ Platformプラグイン開発ドキュメント翻訳-一般スレッドルール
769 ワード
General Threading Rules
一般的に、IntelliJ Platformのデータ構造は、単一のreaderまたはwriterロックを使用することができる.
どのスレッドでもデータを読み取ることができます.UIスレッドで読み作業をするには、いかなる代価も必要ではない.しかし、他のスレッドでの読み出し動作は、いずれも
データの書き込みはUIスレッドでのみ可能であり、
バックグラウンドスレッドからイベント配信スレッドに制御情報が伝達され、プラグインは
一般的に、IntelliJ Platformのデータ構造は、単一のreaderまたはwriterロックを使用することができる.
どのスレッドでもデータを読み取ることができます.UIスレッドで読み作業をするには、いかなる代価も必要ではない.しかし、他のスレッドでの読み出し動作は、いずれも
ApplicationManager.getApplication().runReadAction()
法によって行われる必要がある.データの書き込みはUIスレッドでのみ可能であり、
ApplicationManager.getApplication().runWriteAction()
方法でなければならない.バックグラウンドスレッドからイベント配信スレッドに制御情報が伝達され、プラグインは
ApplicationManager.getApplication().invokeLater()
の代わりにSwingUtilities.invokeLater()
を使用すべきである.前者は、動作実行時のモダリティボックスのスタックがどのような状態にあるべきかを指定するように、今回の呼び出し時のモダリティボックスの状態を指定することができます.リレーModalityState.NON_MODAL
は、動作がすべてのモダリティボックスが閉じられた後に実行されることを示す.リレーModalityState.stateForComponent()
は、指定されたコンポーネントがまだ見られている間に動作が実行されることを示す.