spring quartz 는 다 중 스 레 드 를 사용 하여"함정"을 병행 합 니 다.
job:ranJob 을 정의 합 니 다.설정 은 1 초 에 한 번 씩 실행 되 며,설정 은 덮어 쓰 고 실행 할 수 없습니다.
false" />
1000" />
job 코드:
System.out.println("Start job");
ExecutorService exec = Executors.newFixedThreadPool(1);
Thread thread = new Thread(new Runnable() {
@Override
public void run() {
System.out.println("thread start");
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("thread end");
}
});
exec.execute(thread);
System.out.println("end job");
프로그램 출력 결과:
Start job
end job
thread start
Start job
end job
thread start
Start job
end job
thread start
Start job
end job
thread start
thread end
결 과 를 통 해 알 수 있 듯 이 job 의 병렬 덮어 쓰기 설정 은 전혀 적용 되 지 않 은 것 같 습 니 다.그 이 유 는 job 가 다 중 스 레 드 실행 상황 에 관심 이 없 기 때 문 입 니 다.
job 코드 를 수정 하고 다음 코드 를 추가 하여 job 접근 마지막 에 스 레 드 처리 가 끝 났 습 니 다.
while (!exec.isTerminated()) {
// ,
}
코드 수정 후 프로그램 결과:
Start job
thread start
thread end
job 가 끝나 지 않 은 것 을 볼 수 있 습 니 다.이 는 ExecutorService 가 종료 되 지 않 았 음 을 설명 합 니 다.문 서 를 보고 shutdonw()방법 을 추가 합 니 다.job 의 모든 코드 는 다음 과 같 습 니 다.
public void execute() throws InterruptedException {
System.out.println("Start job");
ExecutorService exec = Executors.newFixedThreadPool(1);
Thread thread = new Thread(new Runnable() {
@Override
public void run() {
System.out.println("thread start");
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("thread end");
}
});
exec.execute(thread);
exec.shutdown();
while (!exec.isTerminated()) {
// ,
}
System.out.println("end job");
}
인쇄 결 과 는 다음 과 같 습 니 다.
Start job
thread start
thread end
end job
Start job
thread start
thread end
end job
Start job
thread start
thread end
end job
OK,이로써 spring quartz 다 중 스 레 드 병행 문제 해결.돌 이 켜 보면 우 리 는 isTerminated()방법 등 다 중 스 레 드 가 끝 난 후에 job 를 끝내 야 합 니 다.다 중 스 레 드 퀘 스 트 발송 이 끝 난 후 shutdown()방법 으로 스 레 드 를 순서대로 닫 아야 합 니 다(작업 을 수행 하고 있 습 니 다.새 작업 을 받 지 않 습 니 다)
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
JAVA 다 중 스 레 드 메커니즘 의 스 레 드 생 성target 을 실행 대상 으로 지정 한 name 을 이름 으로 하고 group 에서 참조 하 는 스 레 드 그룹의 일원 으로 새 Thread 대상 을 할당 합 니 다. 이 스 레 드 가 독립 된 Runnable 실...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.