• Java线程定时器


    Java线程池详解:ExecutorService、ThreadPoolExecutor、Executors

    Timer定时器

    构造器/方法说明
    public Timer()创建Timer定时器对象
    public void schedule​(TimerTask task, long delay, long period)开启一个定时器,按照计划处理TimerTask任务

    Timer定时器的特点和存在的问题
    1、Timer是单线程,处理多个任务按照顺序执行,存在延时与设置定时器的时间有出入;
    2、可能因为其中的某个任务的异常使Timer线程死掉,从而影响后续任务执行。

    代码示例

    public class TimerDemo1 {
        public static void main(String[] args) {
            // 1、创建Timer定时器
            Timer timer = new Timer();  // 定时器本身就是一个单线程。
            // 2、调用方法,处理定时任务
            timer.schedule(new TimerTask() {
                @Override
                public void run() {
                    System.out.println(Thread.currentThread().getName() + "执行AAA~~~" + new Date());
    //                try {
    //                    Thread.sleep(5000);
    //                } catch (InterruptedException e) {
    //                    e.printStackTrace();
    //                }
                }
            }, 0, 2000);
    
            timer.schedule(new TimerTask() {
                @Override
                public void run() {
                    System.out.println(Thread.currentThread().getName() + "执行BB~~~"+ new Date());
                    System.out.println(10/0);
                }
            }, 0, 2000);
    
            timer.schedule(new TimerTask() {
                @Override
                public void run() {
                    System.out.println(Thread.currentThread().getName() + "执行CCC~~~"+ new Date());
                }
            }, 0, 3000);
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33

    ScheduledExecutorService定时器

    ScheduledExecutorService是 jdk1.5中引入了并发包,目的是为了弥补Timer的缺陷, ScheduledExecutorService内部为线程池。
    在这里插入图片描述
    在这里插入图片描述
    ScheduledExecutorService的优点
    基于线程池,某个任务的执行情况不会影响其他定时任务的执行。

    代码示例

    public class TimerDemo2 {
        public static void main(String[] args) {
            // 1、创建ScheduledExecutorService线程池,做定时器
            ScheduledExecutorService pool = Executors.newScheduledThreadPool(3);
    
            // 2、开启定时任务
            pool.scheduleAtFixedRate(new TimerTask() {
                @Override
                public void run() {
                    System.out.println(Thread.currentThread().getName() + "执行输出:AAA  ==》 " + new Date());
                    try {
                        Thread.sleep(100000);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                }
            }, 0, 2, TimeUnit.SECONDS);
    
    
            pool.scheduleAtFixedRate(new TimerTask() {
                @Override
                public void run() {
                    System.out.println(Thread.currentThread().getName() + "执行输出:BBB  ==》 " + new Date());
                    System.out.println(10 / 0);
                }
            }, 0, 2, TimeUnit.SECONDS);
    
    
            pool.scheduleAtFixedRate(new TimerTask() {
                @Override
                public void run() {
                    System.out.println(Thread.currentThread().getName() + "执行输出:CCC  ==》 " + new Date());
                }
            }, 0, 2, TimeUnit.SECONDS);
    
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
  • 相关阅读:
    分布式架构在云计算平台中的应用及优缺点
    WordPress建站教程:10步快速搭建个人网站
    雷达实测数据的信噪比
    使用Java NIO进行文件操作、网络通信和多路复用的案例
    深入了解 npm:Node.js 包管理工具详解
    12_C++_链表_回调函数
    Zookeeper笔记1
    银河麒麟桌面操作系统V10升级 华云数据携手麒麟为用户提供更佳体验
    号称“阿里爸爸”最新Java面试八股文,从最基础的面试题开始
    MySQL安装
  • 原文地址:https://blog.csdn.net/weixin_52341477/article/details/125487697