多线程环境中eclipse插件的进度监视器

时间:2015-03-24 06:59:57

标签: java eclipse multithreading

我有一个eclipse插件,它是多线程应用程序。对于多线程,我使用了ExecutorFramework

我有一个主类,其中有3个主要功能[analysis1(),analysis2(),analysis3()],它们使用多线程。

Class Testing{
    initialization();
    analysis1();
    .....
    ....
    analysis2();
    ....
    if(condition) {
       analysis3()
    }

假设initilaization()对应10%,分析1(),分析2()和分析3()分别对应40%,10%,40%

所有analysis1(),analysis2()和analysis3()看起来如下所示 我起诉监视器的地方

            exeService = Executors.newFixedThreadPool(coresNumber);

            ExecutorCompletionService<Void> exeCompletionService = new ExecutorCompletionService<Void>(
                    exeService);
            List<Future<Void>> futures = new ArrayList<Future<Void>>();
            int workPerUnit = percentfunc/ futures.size();
            for (int i = 0; i < futures.size(); ++i) {

                Future<Void> future = exeCompletionService.take();
                monitor.worked(workPerUnit); 
                if (null != monitor && monitor.isCanceled()) {
                    if (exeService != null) {                         
                        exeService.shutdownNow();
                    }
                    return Status.CANCEL_STATUS;
                }
                future.get();
            }

percentfunc是我为每个主要功能提供的百分比。

我有一个问题,即即使在执行第二个主要功能之前,监视器也会完成100%。应该怎么做来解决这个问题。

我没有考虑多线程来报告进度。任何关于如何使用它的想法表示赞赏。

我还必须考虑执行analyze3()有时是可选的。在那种情况下,initialization(),analysis1(),analysis2()一起应该100%。

0 个答案:

没有答案