代码之家  ›  专栏  ›  技术社区  ›  John Doe

工作区作业的使用

  •  1
  • John Doe  · 技术社区  · 6 年前

    我有一个Eclipse插件,它有一些性能问题。查看进度视图时,有时会有多个作业在等待,从代码来看,它的大部分结构都基于扩展 WorkspaceJobs 混合 Guava EventBus 事件。当前的解决方案还涉及嵌套作业…

    我阅读了文档,我理解它们的用途,但我不明白为什么我可以运行工作区作业 syncexec/asyncexec 从总线上发送事件时触发的方法?

    例如,我可以创建一个事件来触发将要执行的操作,而不是创建等待另一个操作的3个作业。 Job 1 ,则当该方法完成时,它将发送一个不同的事件类型,该类型将触发一个执行以下操作的方法 Job 2 会做的等等…

    所以不是:

    WorkspaceJob Job1 = new WorkspaceJob("Job1");
    Job1.schedule();
    WorkspaceJob Job2 = new WorkspaceJob("Job2");
    Job2.schedule();
    WorkspaceJob Job1 = new WorkspaceJob("Job3");
    Job3.schedule();
    

    我可以使用:

    @Subsribe
    public replaceJob1(StartJob1Event event) {
        //do what runInWorkspace() of Job1 would have done
        com.something.getStaticEventBus().post(new Job1FinishedEvent());
    }
    
    
    @Subsribe
    public replaceJob2(Job1FinishedEvent event) {
        //do what `runInWorkspace()` of Job2 would have done
        com.something.getStaticEventBus().post(new Job2FinishedEvent());
    }
    
    @Subsribe
    public replaceJob3(Job2FinishedEvent event) {
        //do what `runInWorkspace()` of Job3 would have done
        com.something.getStaticEventBus().post(new Job3FinishedEvent());
    }
    

    我还没有尝试过,因为我尽可能地简化了想法,问题比这复杂,但我认为 EventBus 将在性能方面胜于 工作区作业 .

    有人能证实我的想法或告诉我为什么我不应该尝试这个(除了我必须对我的事件有一个好的架构之外)?

    1 回复  |  直到 6 年前
        1
  •  2
  •   greg-449    6 年前