任务调度学习

jdk自带三种定时任务实现方式

1 Thread

public class Demo01 {
    static long count = 0;
    public static void main(String[] args) {
        Runnable runnable = new Runnable() {
            @Override
            public void run() {
                while (true) {
                    try {
                        Thread.sleep(1000);
                        count++;
                        System.out.println(count);
                    } catch (Exception e) {
                        // TODO: handle exception
                    }
                }
            }
        };
        Thread thread = new Thread(runnable);
        thread.start();
    }
}

2 java.util.TimeTask

public class Demo02 {
    static long count = 0;

    public static void main(String[] args) {
        TimerTask timerTask = new TimerTask() {

            @Override
            public void run() {
                count++;
                System.out.println(count);
            }
        };
        Timer timer = new Timer();
        // 天数
        long delay = 0;
        // 秒数
        long period = 1000;
        timer.scheduleAtFixedRate(timerTask, delay, period);
    }

}

3 java.util.concurrent.ScheduledExecutorService

public class Demo003 {
    public static void main(String[] args) {
        Runnable runnable = new Runnable() {
            public void run() {
                // task to run goes here
                System.out.println("Hello !!");
            }
        };
        ScheduledExecutorService service = Executors.newSingleThreadScheduledExecutor();
        // 第二个参数为首次执行的延时时间,第三个参数为定时执行的间隔时间
        service.scheduleAtFixedRate(runnable, 1, 1, TimeUnit.SECONDS);
    }
}

定时任务框架Quarts

引入jar包,按官方教程编程即可

分布式定时任务xxl-job

github开源分布式任务调度框架

①   部署: xxl-job-admin  作为注册中心
②   创建执行器(具体调度地址) 可以支持集群
③   配置文件需要填写xxl-job注册中心地址
④   每个具体执行job服务器需要创建一个netty连接端口号
⑤   需要执行job的任务类,集成IJobHandler抽象类注册到job容器中
⑥   Execute方法中编写具体job任务

你可能感兴趣的:(任务调度学习)