시간당 4 번 중앙 데이터베이스와 동기화되는 웹 응용 프로그램이 있습니다. 과정은 보통 2 분이 걸립니다. 이 프로세스를 X : 55, X : 10, X : 25 및 X : 40의 스레드로 실행하여 사용자가 X : 00, X : 15, X : 30 및 X : 45에서 알 수 있도록합니다. 그들에게는 데이터베이스의 깨끗한 복사본이 있습니다. 그것은 단지 기대를 관리하는 것입니다. 나는 java.util.concurrent
에서 집행자를 지났지 만 스케줄링은 실제로 이것이 시간의 관점에서 실행될 때 어떤 보증도 제공하지 않는다고 믿는 scheduleAtFixedRate
으로 수행됩니다. 첫 번째 지연 시간을 사용하여 Runnable
을 시작할 수 있으므로 첫 번째 지연 시간은 15 분마다 시작 시간과 일정에 가깝지만 시간이 갈수록 길어지는 것으로 보입니다. 매 분기마다 5 분 전에 실행되도록 스레드를 예약하는 더 쉬운 방법이 있습니까?특정 시간에 자바 스레드 실행
7
A
답변
9
Runnable 일정에 "다음 실행"을 허용 할 수 있습니다.
같은
class Task implements Runnable {
private final ScheduledExecutorService service;
public Task(ScheduledExecutorService service){
this.service = service;
}
public void run(){
try{
//do stuff
}finally{
//Prevent this task from stalling due to RuntimeExceptions.
long untilNextInvocation = //calculate how many ms to next launch
service.schedule(new Task(service),untilNextInvocation,TimeUnit.MILLISECONDS);
}
}
}
1
TimerTask
이 사례를 처리합니다. 당신은 작업 일정을 계속해야하지 않으려면
이
schedule(TimerTask, Date)를 참조하십시오, 당신은 Quartz 같은 작업 스케줄링 도구로보고 할 수 있습니다.
2
Quartz 응용 프로그램이 웹 기반이므로 적합합니다. 그것은 당신이 필요로하는 정교한 시간 기반의 스케줄링을 제공 할 것입니다. 가장 작은 독립 실행 형 응용 프로그램에서 -
석영 가 통합, 또는 실질적 측면 자바 EE 또는 Java SE 응용 프로그램을 함께 사용할 수있는 모든 기능을 갖춘 오픈 소스 작업 스케줄링 서비스 가장 큰 전자 상거래 시스템입니다. Quartz는 을 사용하여 수십, 수백 또는 심지어 수만 개의 작업을 실행하기위한 간단하거나 복잡한 일정을 만들 수 있습니다. ; 작업이 표준 Java 구성 요소로 정의 된 작업은 실질적으로 사용자가 수행하도록 프로그램 할 수있는 모든 구성 요소를 실행합니다. Quartz Scheduler에는 JTA 트랜잭션 및 클러스터링과 같은 많은 엔터프라이즈 급 기능이 포함되어 있습니다.
관련 문제
- 1. 특정 시간에 html 실행
- 2. 특정 시간에 SQL 쿼리 실행
- 3. 장고의 특정 시간에 알림 실행
- 4. postDelayed를 사용하여 특정 시간에 작업 실행
- 5. 매일 특정 시간에 일부 코드 실행
- 6. 자바 타이머 - 미래의 특정 시간에 scheduletask하는 방법
- 7. 가변 시간에 스크립트 실행
- 8. 주어진 시간에 스레드 풀에서만 특정 양의 스레드를 사용하는 방법
- 9. 지정된 시간에 함수 실행
- 10. 특정 시간에 시작하여 특정 시간에 완료하도록 javax.swing.JProgressBar를 사용하는 방법?
- 11. 특정 시간에 입력 받기
- 12. 특정 시간에 멈추는 타이머
- 13. 실행 시간에 타원을 변형하는 방법
- 14. 특정 시간에 Rails에서 액션 수행
- 15. 자바 스레드 확장 실행 가능 상태
- 16. 특정 시간에 일을 수행하는 방법
- 17. javascript 기능을 볼 수있는 플러그인이 특정 시간에 실행 중임
- 18. 시간이 특정 시간에 도달하면 함수를 트리거하는 방법
- 19. 웹 서버에서 특정 시간에 특정 작업 수행
- 20. Java에서 다중 스레드 실행
- 21. 특정 시간에 실행되는 Java 프로그램
- 22. 특정 시간에 링크를 클릭하는 스크립트
- 23. 특정 시간에 flex initComplete를 호출하십시오.
- 24. 시간을 추적하고 특정 시간에 무언가를하십시오
- 25. 특정 시간에 NSDate 객체를 초기화하십시오.
- 26. 특정 시간에 실행할 PHP 스크립트
- 27. android에서 특정 시간에 작업 호출
- 28. 특정 시간에 코드를 실행하는 방법
- 29. Java에서 특정 시간에 프로그램이나 메소드를 실행하십시오.
- 30. OpenMP - 청크에서 스레드 실행
dit 인 이런 식으로 아름답게 노력하고 있습니다. 감사. – rmarimon
@rmarimon : NP :) RuntimeException이 주기적 실행을 멈출 수 있다는 점에주의하십시오. 나는 이것으로 화상을 입었으므로 그에 따라 대답을 편집했다. –
방금 변경했습니다. 나는 try {} catch (Exception e) {}를 시도한 다음 다시 스케줄하는 것을 좋아했다. 그러나 마침내 올바른 접근 방식처럼 보인다. – rmarimon