菠菜源码-搭建Java实现定时任务的多种方式

1、Thread类中Thread.sleep(1000); 菠菜源码-搭建Q2152876294 论坛:diguaym.com //在while(true)循环内,表示每个1秒执行一次
2、使用Timer类执行定时任务
/**

  • 使用Timer类实现定时任务
    */
    public class Demo02 {
    public static void main(String[] args) {
    TimerTask timerTask = new TimerTask() {

        public void run() {
            System.out.println(“hello”);
        }
    };
    Timer timer = new Timer();
            //执行任务     任务延迟多久开始     任务每隔多久执行一次
    timer.scheduleAtFixedRate(timerTask, delay, period);

    }

}
3、使用juc包下的ScheduledExecutorService类
public class Test {
static int count = 0;
public static void main(String[] args) {
ScheduledExecutorService pool = Executors.newScheduledThreadPool(5);
pool.scheduleAtFixedRate(new Runnable() {
public void run() {
System.out.println(“hello”);
}
//任务延迟0秒执行,每隔2秒执行一次
}, 0, 2, TimeUnit.SECONDS);
}
}
4、使用quartz框架
引入pom依赖
<dependencies>

org.quartz-scheduler quartz 2.2.1 org.quartz-scheduler quartz-jobs 2.2.1 任务调度类,需要实现Job接口 public class MyJob implements Job { public void execute(JobExecutionContext context) throws JobExecutionException { System.out.println("hello"); } } 启动类 //1.创建Scheduler的工厂 SchedulerFactory sf = new StdSchedulerFactory(); //2.从工厂中获取调度器实例 Scheduler scheduler = sf.getScheduler(); //3.创建JobDetail JobDetail jb = JobBuilder.newJob(MyJob.class) .withDescription("this is a job") //job的描述 .withIdentity("Job", "Mygroup") //job 的name和group .build(); //任务运行的时间,SimpleSchedle类型触发器有效 long time= System.currentTimeMillis() + 3*1000L; //3秒后启动任务 Date statTime = new Date(time); //4.创建Trigger //使用SimpleScheduleBuilder或者CronScheduleBuilder Trigger t = TriggerBuilder.newTrigger() .withDescription("") .withIdentity("Trigger", "TriggerGroup") //.withSchedule(SimpleScheduleBuilder.simpleSchedule()) .startAt(statTime) //默认当前时间启动 .withSchedule(CronScheduleBuilder.cronSchedule("0/2 * * * * ?")) //两秒执行一次 .build(); //5.注册任务和定时器 scheduler.scheduleJob(jb, t); //6.启动 调度器 scheduler.start(); cron表达式: http://cron.qqe2.com/ 5、springboot内置定时任务调度 @Component public class ScheduledTasks { private static final SimpleDateFormat dateFormat = new SimpleDateFormat("HH:mm:ss"); //每隔5秒打印一次 @Scheduled(fixedRate = 5000) public void reportCurrentTime() { System.out.println("现在时间:" + dateFormat.format(new Date())); } } 在Spring Boot的主类App.java中加入@EnableScheduling注解,启用定时任务的配置

猜你喜欢

转载自blog.51cto.com/13966032/2174067
今日推荐