2016-06-09 4 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(); 

그런 다음 다른 방법으로 같은 방식으로 두 번째 작업을 계속 실행합니다. 따라서 두 번째 작업은 첫 번째 작업이 완료 될 때까지 대기합니다. 같은 시간에 두 개를 실행하거나 첫 번째 개를 강제로 실행하여 두 번째를 실행할 수있는 방법이 있습니까? 그렇지 않다면 작업 대신 스레드에서 진행 모니터를 실행하는 방법이 있습니까? 클래스를 실행 가능하게 만들고 run 메소드에 작업을 넣으려고했지만 동일한 결과가 있습니다. 감사합니다. .

+0

ShedulingRule이 설정되지 않은 경우 기본 동작이 무엇인지 알지도 못합니다. 충돌하지 않는 일정 잡기 규칙을 설정하려고 할 수 있습니다. 좋아요 : job.setRule (새 ISchedulingRule() {..})); –

답변

0

기본적으로 여러 잡스에 의해 처리 스레드 풀을 사용하여 동시에 실행합니까ExecutorService를에 읽을 수 있습니다 Eclipse 작업 관리자.

다른 작업이 한 번에 실행되지 않도록 작업 스케줄링 규칙을 실제로 사용해야합니다.

물론 하나의 작업이 매우 프로세서 집약적 인 작업을 수행하는 경우 다른 작업이 실행되는 동안 많은 작업이 수행되지 않을 수 있습니다.

0

임 자바 전문가가 아니라,하지만 난 당신이 동시에 작업을 수행 할 수있는 비동기 실행 메커니즘을 java.util.concurrent.ExecutorService

java.util.concurrent.ExecutorService 인터페이스에있는 자바의 ExecutorService를를 나타냅니다 사용하여 작업을 실행할 수 있습니다 확신 해요 백그라운드에서. 따라서 ExecutorService는 스레드 풀과 매우 유사합니다.

내가 당신을 위해 집행을 구현하지 않을거야,하지만 당신은 here