2016-06-09 35 views
0

我想在我的java代碼上運行多個作業。他們使用IProgressMonitor來更新進度欄。運行多個作業與進度監視器

Job job = new Job("My first job") { 
    @Override 
    protected IStatus run(IProgressMonitor monitor) { 
     monitor.beginTask("start task", 100); 
     //long running Hibernate save operation 
     monitor.done(); 
     return Status.OK_STATUS; 
     } 
    }; 
job.setUser(false); 
job.schedule(); 

我再繼續運行在不同的類中的第二份工作以同樣的方式。所以第二項工作就等到第一項工作完成。有沒有辦法同時運行兩個,或強制第一個暫停,以便第二個可以運行?如果沒有,有沒有辦法在線程而不是工作中運行進度監控器? 我試着讓我的類可運行並將作業放入運行方法中,但結果相同。 謝謝。

+0

當不設置S schedulingRule時,我也不知道默認行爲是什麼。您可以嘗試設置一個從不衝突的調度規則。像:job.setRule(new ISchedulingRule(){..}); –

回答

0

默認情況下多個作業都在同一時間使用線程被處理池運行讀了Eclipse作業管理器。

實際上,您必須使用作業調度規則來防止不同的作業一次運行。

當然,如果一個Job正在做一些非常處理器密集型的工作,其他工作在運行時可能不會做太多工作。

0

我不是在Java中的專家,但我敢肯定,你可以同時使用Java的ExecutorService的java.util.concurrent.ExecutorService

java.util.concurrent.ExecutorService接口發現表示異步執行機制,它能夠執行的任務的運行任務在背景中。因此ExecutorService與線程池非常相似。

我不會落實執行你,但你可以在的ExecutorServicehere