IntelliJ Platform 插件开发文档翻译 - 一般线程规则

原文: General Threading Rules

一般地, IntelliJ Platform 的数据结构都可以使用单个reader或writer锁。

任何线程都可以读取数据。在UI线程做读操作不需要任何代价。然而,在任何其它线程做读操作,都需要通过ApplicationManager.getApplication().runReadAction()方法进行。

对数据的写操作只能在UI线程进行,且必须通过ApplicationManager.getApplication().runWriteAction()方法.

从后台线程向事件分发线程传递控制信息,插件应该使用ApplicationManager.getApplication().invokeLater()代替SwingUtilities.invokeLater()。前者允许指定本次调用时的模态框状态,比如指定操作执行时模态框的堆栈应该在一个什么状态。传递ModalityState.NON_MODAL表示操作会在所有模态框关闭后执行。传递ModalityState.stateForComponent()表示操作会在某个指定的组件仍然可见时执行。

你可能感兴趣的:(IntelliJ Platform 插件开发文档翻译 - 一般线程规则)