上面从源码的角度分析了一下Timer,因为用法很简单,主要是源码分析。说了这么多,Timer还是有一定的缺陷的,
1、Timer管理延时任务的缺陷
Timer在执行定时任务时只会创建一个线程,所以如果存在多个任务,且任务时间过长,超过了两个任务的间隔时间,会发生一些缺陷。我们看一个例子:
这个例子中的功能是这样的,第一个任务在1秒钟之后开始执行,第二个任务在2秒钟之后开始执行。
第一步:定义两个TimerTask
还有一个:
第二步:我们测试一下:
我们在上面的Task1中会发现,任务2不是应该在32秒的时候执行嘛,怎么会在4秒钟之后才执行。究其原因是任务1执行了3秒,但是线程只有一个,所以只能先把任务1执行完才去执行任务2。这就是其缺陷之一。
2、Timer当任务抛出异常时的缺陷
这个缺陷的意思是,其中有一个任务抛出了RuntimeException,那么所有的任务都会停止执行。这个演示起来很简单。
第一步:声明几个定时任务
第二步:测试
我们来看一下结果:
正是Timer有很多的缺陷,所以出现了Timer的替代品ScheduledExecutorService,用来解决上面出现的问题。而且也出现了很多优秀的框架。具体的我会在后续文章中介绍。
本文地址:网络百科频道 https://www.eeeoo.cn/wangluo/903047_3.html,嗨游网一个专业手游免费下载攻略知识分享平台,本站部分内容来自网络分享,不对内容负责,如有涉及到您的权益,请联系我们删除,谢谢!