文章目录
1. java自带的Timer2.ScheduledThreadPool-线程池3.使用注解的形式:@Scheduled4.使用Quartz定时任务调度器
1. java自带的Timer
Timer timer
= new Timer();
timer
.schedule(new TimerTask() {
@Override
public void run() {
System
.out
.println("Time's up!");
}
},3*1000,1000);
2.ScheduledThreadPool-线程池
ScheduledExecutorService scheduledThreadPool
= Executors
.newScheduledThreadPool(2);
scheduledThreadPool
.scheduleAtFixedRate(new Runnable() {
@Override
public void run() {
System
.out
.println("=========================");
}
}, 1000, 2000, TimeUnit
.MILLISECONDS
);
scheduledThreadPool
.scheduleAtFixedRate(new Runnable() {
@Override
public void run() {
System
.out
.println(System
.currentTimeMillis()+"<><>"+System
.nanoTime());
}
}, 1000, 2000, TimeUnit
.MILLISECONDS
);
3.使用注解的形式:@Scheduled
@Component
public class SpringScheduled {
@Scheduled(initialDelay
= 2000,fixedDelay
= 5000)
public void doSomething() {
System
.out
.println("Spring自带的Scheduled执行了=======================");
}
}
//下面是开启
@SpringBootApplication
@EnableScheduling
public class DemoApplication {
public static void main(String
[] args
) throws InterruptedException
{
SpringApplication application
= new SpringApplication(DemoApplication
.class);
application
.addListeners(new ContextRefreshedEventListener());
application
.run(args
);
}
}
4.使用Quartz定时任务调度器
配置
@Configuration
public class QuartzConfig {
@Resource
private ScheduleTask scheduleTask
;
@Bean(name
="firstJobDetail")
public MethodInvokingJobDetailFactoryBean
firstJobDetail(){
MethodInvokingJobDetailFactoryBean method
= new MethodInvokingJobDetailFactoryBean();
method
.setTargetObject(scheduleTask
);
method
.setTargetMethod("test");
method
.setConcurrent(false);
return method
;
}
@Bean(name
="firstTrigger")
public SimpleTriggerFactoryBean
firstTrigger(JobDetail firstJobDetail
){
SimpleTriggerFactoryBean simpleBean
= new SimpleTriggerFactoryBean();
simpleBean
.setJobDetail(firstJobDetail
);
simpleBean
.setStartDelay(1000);
simpleBean
.setRepeatInterval(1000);
return simpleBean
;
}
@Bean(name
= "scheduler")
public SchedulerFactoryBean
schedulerFactoryBean(Trigger firstTrigger
){
SchedulerFactoryBean factoryBean
= new SchedulerFactoryBean();
factoryBean
.setTriggers(firstTrigger
);
return factoryBean
;
}
}
要执行的任务
@Component
public class ScheduleTask {
public void test() {
System
.out
.println("====================================");
}
}
转载说明: 作者:璀璨英雄 原文链接:https://blog.csdn.net/l848168/article/details/84971331