TimeTrack_cycletime和takttime的区别

TimeTrack_cycletime和takttime的区别使用TimerTask可以方便的实现定时任务的功能,但是如果使用不当,反而会带来隐患。在使用TimerTask时,TimerTask中的代码必须要做异常处理,否则产生异常的时候,就挂掉了。特别像使用MQ发送数据的时候,不会显式的要求你捕获异常,如果你忘记了,那么在某个时刻MQ异常的时候(比如网络异常),在发送数据到MQ失败的时候,TimerTask就挂掉了。比如如下代码:Appli…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全家桶1年46,售后保障稳定

使用TimerTask可以方便的实现定时任务的功能,但是如果使用不当,反而会带来隐患。

在使用TimerTask时,TimerTask中的代码必须要做异常处理,否则产生异常的时候,就挂掉了。
特别像使用MQ发送数据的时候,不会显式的要求你捕获异常,如果你忘记了,那么在某个时刻MQ异常的时候(比如网络异常),在发送数据到MQ失败的时候,TimerTask就挂掉了。

比如如下代码:

ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext_*.xml");
final JmsSender jmsSender = ac.getBean(JmsSender.class);
Timer timer = new Timer();
// 1.TimerTask中不处理异常
timer.schedule(new TimerTask() {
    @Override
    public void run() {
        System.out.println("开始发送数据");
        jmsSender.sendTopicMsg("test.topic","hello,world");
        System.out.println("数据发送成功");
    }
},10000,5000);

Jetbrains全家桶1年46,售后保障稳定

这段代码没有做异常处理,我们看下执行结果:

TimeTrack_cycletime和takttime的区别
最开始启动程序时,让MQ正常启动起来,这个时候TimerTask是正常工作的;在某个时刻关闭MQ,这个时候发现TimerTask中已经没有打印任何东西了,包括后面MQ恢复了也没有再打印,说明TimerTask已经挂掉了。
所以在使用TimerTask的时候要尤其注意这点,搞不好就踩着坑了。

处理方法有这么几种:
1.仍然使用TimerTask,但做异常处理;
2.使用单一线程的线程池来做;
3.使用线程,同样做异常处理。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/234642.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • swoole手册

    swoole手册

    2021年11月3日
    51
  • 添加gitignore文件后使其生效

    添加gitignore文件后使其生效

    2021年10月20日
    52
  • beta分布的均值和方差_二维均匀分布的期望和方差

    beta分布的均值和方差_二维均匀分布的期望和方差均值为a+b2\frac{a+b}{2}2a+b​,总数n为(b−a)(b-a)(b−a)方差=(x−均值)2n\frac{(x-均值)^2}{n}n(x−均值)2​所以[a,b]均匀分布的方差为:∫ab(x−a+b2)2dx(b−a)\frac{\int_a^b(x-\frac{a+b}{2})^2dx}{(b-a)}(b−a)∫ab​(x−2a+b​…

    2022年9月18日
    3
  • freemarker错误九

    freemarker错误九

    2022年1月3日
    47
  • 本体编辑、知识推理与检索

    本体编辑、知识推理与检索本体编辑、知识推理与检索一切要从一个倒霉项目开始说起,项目要求根据一个构建好的本体文件,通过JAVA调用相应API实现对本体文件的编辑、推理以及检索。由于之前对本体、知识图谱这些完全不熟悉,被强行推入坑之后就开始了漫长且毫无希望的技(疯)术(狂)调(百)研(度)之路。。。。调研之前:这是啥呀?调研之后:这tm都是些啥啊!!呼~~好在最后算是做出来了,故在此记录一下过程及部分主要代码。1…

    2022年5月16日
    53
  • vs2012安装教程_vs2005安装图解

    vs2012安装教程_vs2005安装图解Microsoft 的安装包怎么会这样呢?昨天做VS2005 Web项目时,不能加载项目,显示无效还是不支持的安装包,网上搜一下,发现是没有打补丁,急忙在微软网站下载VS2005SP1 补丁,下载家里速度是可以,不到半个小完成.当从22:22分开始安装,装到00:35,整整2个多小时,真是郁闷,怎么是这样的安装包呢,完成了倒是可以打开项目了,不提示上面提到的错误!

    2022年10月6日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号