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()表示操作会在某个指定的组件仍然可见时执行。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 原文链接:http://www.jetbrains.org/intellij/sdk/docs/basics/ar...
    pr488阅读 1,777评论 0 0
  • java 接口的意义-百度 规范、扩展、回调 抽象类的意义-乐视 为其子类提供一个公共的类型封装子类中得重复内容定...
    交流电1582阅读 2,325评论 0 11
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 174,089评论 25 709
  • 喧嚣中,寂寞的成长 当夜幕来临的时候,一个人对着黄昏与昏黄的台灯,静静地坐在院里安抚着心灵,享受着属于自己...
    独孤云逸阅读 328评论 8 18
  • 小时候家里穷,住的都是小房,后来东拼西凑,终于盖起了四间大瓦房。听说妈妈在怀我的时候,还在帮爸爸筛沙子搅水泥。 这...
    英语提分小霞老师阅读 300评论 0 2