SpringBoot 타이머/타이머 작업: 지정된 주기 동안 작업을 수행합니다.

2422 단어
말을 많이 해도 피곤하니 직접 코드에 올리세요.
실현 방식은 세 가지가 있다(더 많은 실현이 있을 수 있는데 이 세 가지는 건물주가 현재 알고 있는 것일 뿐).
1. 정적 타이머, 주기 수정 불가
        
@Configuration("myScheduled")
@EnableScheduling
public class ScheduledDemo{
    // 10     
    @Scheduled(cron="0/10 * * * * ?")
    public void timmer(){
	System.out.println("    ");
    }
}        

2. 동적 타이머
4
//  setCron          
@Component("myScheduled")
public class ScheduledDemo implements SchedulingConfigurer{
	//         10 
	private String cron = "0/10 * * * * ?";
	
	@Override
	public void configureTasks(ScheduledTaskRegistrar taskRegistrar) {
		// TODO Auto-generated method stub
		taskRegistrar.addTriggerTask(new Runnable() {

			@Override
			public void run() {
				// TODO Auto-generated method stub
				System.out.println("    ");
			}
			
		}, new Trigger() {
			@Override
			public Date nextExecutionTime(TriggerContext triggerContext) {
				return new CronTrigger(cron).nextExecutionTime(triggerContext);
			}
		});
	}

	public void setCron(String cron) {
		this.cron = cron;
	}
}
3. 동적 타이머: 다중 스레드 타이머 작업 수행, 실행 스레드 탱크 수 설정 가능(기본 스레드)
   
@Component("myScheduled")
public class ScheduledImpl{
	private ScheduledFuture> future;
	
	@Autowired
	private ThreadPoolTaskScheduler threadPoolTaskScheduler;
	
	@Bean
	public ThreadPoolTaskScheduler threadPoolTaskScheduler() {
		return new ThreadPoolTaskScheduler();
	}
	
	@Override
	public void setCron(final String cron) {
		stopCron();
		future = threadPoolTaskScheduler.schedule(new Runnable() {
			@Override
			public void run() {
				// TODO Auto-generated method stub
				System.out.println("    ");
			}
		}, new Trigger() {
			@Override
			public Date nextExecutionTime(TriggerContext triggerContext) {
				if(cron==null || "".equals(cron)) {
					return null;
				}
				CronTrigger cronTrigger = new CronTrigger(cron);
				return cronTrigger.nextExecutionTime(triggerContext);
			}
		});
	}
	
	@Override
	public void stopCron() {
		if(future!=null) {
			future.cancel(true);
		}
	}		
}

cron의 매개 변수 설명, 상세한 설명은 직접 인터넷에서 찾아보세요!
대략설명: 초분시 일월일년(생략가능)
/뒤에 주기 표시
- 범위
요일용?,일과가 혼동되는 것을 방지하기 위해서, 만약 일요일에 값이 있다면, 일용?
“0/10 * * * * ?”매10초
“0 0/10 * * * ?”매 10
우정 링크:https://www.cnblogs.com/linjiqin/archive/2013/07/08/3178452.html

좋은 웹페이지 즐겨찾기