2012-12-13 3 views
7

스프링 타이머 실행을 취소하거나 적어도 일부 조건에 따라 실행 빈도를 변경해야합니다. org.springframework.scheduling.quartz.SimpleTriggerBeanorg.springframework.scheduling.timer.ScheduledTimerTask을 모두 사용했습니다. 그것을하는 방법을 찾을 수 없습니다.스프링 타이머 실행 취소 방법

답변

0

이것은 최상의 해결책은 아니지만 다른 문제가 발생할 경우 항상 이벤트가 발생 될 때마다 검사되는 부울을 사용할 수 있으며 부울이 거짓 인 경우 timertask는 즉시 종료되어야합니다.

+0

그건 제가 실제로 한 것입니다. 이 방법은 어떤 조건이 충족되면 다시 작업을 실행하고 싶지 않기 때문에 바람직하지 않습니다. – BigWonder

14

참고 :이 봄 3.0

  1. 읽기 Spring documentation on scheduling tasks입니다은

  2. TimerManagerTaskScheduler 또는 ThreadPoolTaskScheduler 같은 TaskScheduler 서비스를 사용합니다.

  3. TaskScheduler.schedule*() 메서드 으로 전화하여 작업을 예약하고 돌아 오는 ScheduledFuture을 저장하십시오.

  4. 실행을 취소하려면 ScheduledFuture.cancel()을 호출하십시오. 그러면 작업이 더 이상 중단되지 않습니다. 이 때 다른 매개 변수를 사용하여 작업에 TaskScheduler.schedule*()을 호출하여 원하는 경우 일정을 변경할 수 있습니다.

+0

내 bean은 spring xml 파일에 제공됩니다. 거기에서 TaskScheduler의 인스턴스를 얻는 방법은 무엇입니까? Java 코드에서 모두 프로비저닝해야한다는 말입니까? – BigWonder

+0

그냥 ''요소를 사용하여 TaskScheduler를 인스턴스화하고 사용하고자하는 곳에 삽입하십시오. – gpeche

+0

제안 된 솔루션 구현 : https://stackoverflow.com/questions/39152599/ –

0

솔루션은 org.springframework.scheduling.timer.TimerFactoryBean에 ID를 할당 한 다음 응용 프로그램에서이 빈을 검색, 타이머에 캐스팅 해당 객체에 메소드를 취소 호출하는 것입니다.

+0

' ' 그러면 myScheduler와'cancel()'을 얻을 수 있습니다. – Andre

관련 문제