java精确发送消息之Timer

本文通过Java代码示例展示了如何使用Calendar与Timer类来设定一个精确到秒的定时任务,并探讨了多线程环境下定时任务可能遇到的问题及解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

废话不多说直接上代码
public static void main(String[] args) {
    Calendar calendar = Calendar.getInstance();

    calendar.set(Calendar.YEAR,2022); // 设置年份为2020

    calendar.set(Calendar.MONTH, 10);//设置日期为11月份   这里10表示11月份    11就表示12月份

    calendar.set(Calendar.DAY_OF_MONTH,2);//设置日期为27号

    calendar.set(Calendar.HOUR_OF_DAY, 8); //设置15点的时候触发

    calendar.set(Calendar.MINUTE, 51); //设置43分钟的时候触发

    calendar.set(Calendar.SECOND, 1); //设置第一秒的时候触发

    Date time = calendar.getTime();
    TimerTask timerTask = new TimerTask(){
        /**
         * 准时在指定时间发布
         */
        @Override
        public void run() {
            System.out.println("我是你爹");
        }
    };

    Timer timer = new Timer();

    timer.schedule(timerTask, time);
}

 timer报错很正常,可以正常运行,只是阿里的代码规范插件会提醒你:多程并行处理定时任务时,Timeri运行多个TimeTask时,只要其中之一有获抛出的异常,
其它任务便会自动终止运行,使用ScheduledExecutorService.则设有这个问题

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值