范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文

实例分析ScheduledThreadPoolExecutor与Timer的区别

  本文分享自华为云社区《【高并发】ScheduledThreadPoolExecutor与Timer的区别和简单示例》,作者:冰 河 。
  JDK 1.5开始提供ScheduledThreadPoolExecutor类,ScheduledThreadPoolExecutor类继承ThreadPoolExecutor类重用线程池实现了任务的周期性调度功能。在JDK 1.5之前,实现任务的周期性调度主要使用的是Timer类和TimerTask类。本文,就简单介绍下ScheduledThreadPoolExecutor类与Timer类的区别,ScheduledThreadPoolExecutor类相比于Timer类来说,究竟有哪些优势,以及二者分别实现任务调度的简单示例。二者的区别线程角度Timer是单线程模式,如果某个TimerTask任务的执行时间比较久,会影响到其他任务的调度执行。ScheduledThreadPoolExecutor是多线程模式,并且重用线程池,某个ScheduledFutureTask任务执行的时间比较久,不会影响到其他任务的调度执行。系统时间敏感度Timer调度是基于操作系统的绝对时间的,对操作系统的时间敏感,一旦操作系统的时间改变,则Timer的调度不再精确。ScheduledThreadPoolExecutor调度是基于相对时间的,不受操作系统时间改变的影响。是否捕获异常Timer不会捕获TimerTask抛出的异常,加上Timer又是单线程的。一旦某个调度任务出现异常,则整个线程就会终止,其他需要调度的任务也不再执行。ScheduledThreadPoolExecutor基于线程池来实现调度功能,某个任务抛出异常后,其他任务仍能正常执行。任务是否具备优先级Timer中执行的TimerTask任务整体上没有优先级的概念,只是按照系统的绝对时间来执行任务。ScheduledThreadPoolExecutor中执行的ScheduledFutureTask类实现了java.lang.Comparable接口和java.util.concurrent.Delayed接口,这也就说明了ScheduledFutureTask类中实现了两个非常重要的方法,一个是java.lang.Comparable接口的compareTo方法,一个是java.util.concurrent.Delayed接口的getDelay方法。在ScheduledFutureTask类中compareTo方法方法实现了任务的比较,距离下次执行的时间间隔短的任务会排在前面,也就是说,距离下次执行的时间间隔短的任务的优先级比较高。而getDelay方法则能够返回距离下次任务执行的时间间隔。是否支持对任务排序Timer不支持对任务的排序。ScheduledThreadPoolExecutor类中定义了一个静态内部类DelayedWorkQueue,DelayedWorkQueue类本质上是一个有序队列,为需要调度的每个任务按照距离下次执行时间间隔的大小来排序能否获取返回的结果Timer中执行的TimerTask类只是实现了java.lang.Runnable接口,无法从TimerTask中获取返回的结果。ScheduledThreadPoolExecutor中执行的ScheduledFutureTask类继承了FutureTask类,能够通过Future来获取返回的结果。
  通过以上对ScheduledThreadPoolExecutor类和Timer类的分析对比,相信在JDK 1.5之后,就没有使用Timer来实现定时任务调度的必要了。二者简单的示例
  这里,给出使用Timer和ScheduledThreadPoolExecutor实现定时调度的简单示例,为了简便,我这里就直接使用匿名内部类的形式来提交任务。Timer类简单示例
  源代码示例如下所示。package io.binghe.concurrent.lab09;  import java.util.Timer; import java.util.TimerTask;  /**  * @author binghe  * @version 1.0.0  * @description 测试Timer  */ public class TimerTest {      public static void main(String[] args) throws InterruptedException {         Timer timer = new Timer();         timer.scheduleAtFixedRate(new TimerTask() {             @Override             public void run() {                 System.out.println("测试Timer类");             }         }, 1000, 1000);         Thread.sleep(10000);         timer.cancel();     } }
  运行结果如下所示。测试Timer类 测试Timer类 测试Timer类 测试Timer类 测试Timer类 测试Timer类 测试Timer类 测试Timer类 测试Timer类 测试Timer类 ScheduledThreadPoolExecutor类简单示例
  源代码示例如下所示。package io.binghe.concurrent.lab09;  import java.util.concurrent.*;  /**  * @author binghe  * @version 1.0.0  * @description 测试ScheduledThreadPoolExecutor  */ public class ScheduledThreadPoolExecutorTest {     public static void main(String[] args) throws  InterruptedException {         ScheduledExecutorService scheduledExecutorService = Executors.newScheduledThreadPool(3);         scheduledExecutorService.scheduleAtFixedRate(new Runnable() {             @Override             public void run() {                 System.out.println("测试测试ScheduledThreadPoolExecutor");             }         }, 1, 1, TimeUnit.SECONDS);          //主线程休眠10秒         Thread.sleep(10000);          System.out.println("正在关闭线程池...");         // 关闭线程池         scheduledExecutorService.shutdown();         boolean isClosed;         // 等待线程池终止         do {             isClosed = scheduledExecutorService.awaitTermination(1, TimeUnit.DAYS);             System.out.println("正在等待线程池中的任务执行完成");         } while(!isClosed);          System.out.println("所有线程执行结束,线程池关闭");     } }
  运行结果如下所示。测试测试ScheduledThreadPoolExecutor 测试测试ScheduledThreadPoolExecutor 测试测试ScheduledThreadPoolExecutor 测试测试ScheduledThreadPoolExecutor 测试测试ScheduledThreadPoolExecutor 测试测试ScheduledThreadPoolExecutor 测试测试ScheduledThreadPoolExecutor 测试测试ScheduledThreadPoolExecutor 测试测试ScheduledThreadPoolExecutor 正在关闭线程池... 测试测试ScheduledThreadPoolExecutor 正在等待线程池中的任务执行完成 所有线程执行结束,线程池关闭
  注意:关于Timer和ScheduledThreadPoolExecutor还有其他的使用方法,这里,我就简单列出以上两个使用示例,更多的使用方法大家可以自行实现。

中华行八十六李白情动桃花潭八十六李白情动桃花潭邢少山李白的一首赠汪伦,使汪伦成为一位名人,使泾县的桃花潭名扬千古与四海。如今,桃花潭成了旅游圣地,然而当时桃花潭并不有名,汪伦更是无名之辈,怎么汪伦与诗仙李白秋季自驾正当时西九华山的美,不止一个视角九月如约而至,褪去了夏日的热烈,蝉鸣渐歇桂花飘香,微风带来了秋的气息。此时,正是自驾出行的好时节,不妨带着满怀丰收的幸福,暂时放下疲惫与烦躁,带家人爱人朋友一起来西九华山享受轻松与旧影天下第一观白云观的盛大庙会白云观位于北京西城区白云路是道教全真派的第一丛林。全真龙门派祖师邱处机曾主持这一宫观,羽化后亦藏遗蜕于此,故而后世全真龙门派道徒尊白云观为全真龙门派的祖庭。白云观作为全真龙门派的第长安十二时辰解码你不知道的天下第一名楼花萼相辉楼典出诗经小雅棠棣,棠棣之花,鄂不韡韡(wiwi),凡今之人,莫如兄弟。意思是说兄弟之间的情谊,就如同这花与萼一样,相互辉映。花萼相辉楼的楼名,很好地象征了唐玄宗兄弟之间的互联网跳国企,以为上岸了,结果降薪30,周末还义务加班,后悔从互联网进国企大概是很多人羡慕的归宿了,但一位从深信服公司跳进中字头国企的网友却发现自己掉坑里了本以为自己上岸了,结果顶着国企的名,却是互联网的作息,工资降了30,最坑的是周末义务鲨鱼哥创业者必经的无人之境至暗时刻,逆境中到底如何破局大家好,我是鲨鱼哥!每一个创业者必然会经历一段无人之境。什么是无人之境,至暗时刻呢?每一个创业者,这一生必然会经历两到三次以上的至暗时刻。至暗时刻,无人之境,你就像走在一个沙漠里一中美达成合作协议!热门中概股大涨,网友服软了?8月31日,美股热门中概股集体走强,哔哩哔哩百度拼多多涨近6,网易涨超4,阿里巴巴涨近3。究其原因,有机构分析认为当前中美双方审计监管合作协议的达成,为中概审计问题提供了良好的开端吃定中国了?狂卖1。7亿吨,澳企中国将长期想要澳大利亚铁矿石众所周知,世界上有四大矿业公司,尤其是铁矿石方面,几乎垄断了全球的开采运输和销售,其中有一家企业FMG算是最小的,当然相比其他企业自然是巨头般存在。企业虽然比不上淡水河谷力拓这类老2010年金砖五国GDP之和是美国的76。98,现在是多少呢?金砖国家的概念是2001年美国高盛公司首席经济师吉姆奥尼尔提出来的,当时全球4个发展中国家中国印度俄罗斯和巴西,发展势头迅猛,经济都处于爆发的前夕。而这4个国家的首字母连起来是英文闲鱼电商走到了十字路口近年来,大众对于商品的剩余价值十分注重,二手商品的转卖的需求日益上涨,二手平台闲鱼也受到了大众的青睐。但就在闲鱼多轮探索中,还是发现尚存许多问题,闲鱼电商若想在未来能够实现新阶段的饿死还是冻死数百万英国老人担心自己不能活过这个冬天根据英国养老金服务机构的数据,大约44达到目前英国国家养老金年龄(66岁)的人表示养老金是他们的主要收入来源。大多数养老金领取者的基本国家养老金为每周141。85英镑,每年约740
房子装修好了,家电什么时候买既便宜又合适好不容易装修好房子了,还没有选家电,可能很多人会说家电有什么好选的,看上哪个买哪个,那你就错了,买家电也是有学问的,选对家电让你用的既舒心还便宜。空调空调一般是4月就开始降价了,6五脏俱全迷你电脑899元文张瑞责编赵悟省总编唐迪对电脑性能要求不高的用户其实可以用小巧的迷你电脑满足需求,台电凌珑S迷你电脑在京东商城的售价为899元,搭载11代赛扬处理器,4核4线程,功耗低至15W,可江浙沪,赏秋泡私汤躺看江浙山水国庆假期正当时,你是正在奔赴山川大海,享受假期的美好,还是安心宅城宅家就地过节呢,如果你也顾虑假期人多不安全堵车机票酒店贵等因素,不妨避开假期,计划一场节后错峰游。作为一直以来的热四川乐山大佛洗脚之后十年,是时间的跨度,人生的刻度,也是衡量家乡变化的尺度。大家好,我是王鹤棣,四川乐山是我的家乡,今天我将和大家聊聊在过去的十年里,我的家乡发生的变化。乐山,西南边陲的一个小城,是南理想L9究竟怎么样?已经下线10000辆车,配空气悬架5。3s破百相比较传统造车企来说,造车新势力不仅需要在技术层面进行攻克难关,还需要紧盯汽车产能,毕竟车辆销量再高,迟迟无法交付,时间一长,用户也会没有耐心,像蔚来汽车之前就公开说过,销量受到了不多生孩子就严惩?专家的建议为啥不考虑年轻人的生活现状?文麻辣新语吴能恩前不久,针对我国生育率持续下降的问题,有专家建议,除了向丁克家庭征税外,还应该向单身的人征收额外的单身税等等。而最为可笑的是,厦门大学教授赵燕菁建议有关部门应该出台网约车现状租赁公司没有车,司机接不到单,乘客打不到车都知道,网约车这个行业水深的很,T3出行高德打车以及一喂顺风车等平台也只是将司机引诱进来后,再无任何补贴和保障,但没想到有一天这个行业,会面临租赁公司没有车,司机接不到单,乘客也打9月造车新势力各家表现哪吒继续领跑,理想汽车王者归来进入10月的第一天,已经有不少造车新势力公布了上个月的销售成绩,哪吒继续领跑榜单,AITO问界月销稳定在万辆,而近来风波不断,被人吐槽割韭菜的理想以破万的成绩王者归来,下面我们就来印度男乒爆冷战胜东京奥运会亚军,甚至喊出要赶超中国的目标10月2日,2022成都世乒赛男团小组赛爆出一大冷门。东京奥运会男团亚军欧洲传统强队德国队1比3不敌印度队。本届世乒赛,德国男团面临新老交替,并没有派出东京奥运会阵容,中国观众熟悉纯电续航210公里!理想L8上市了!又要卖疯?理想L8上市了!新车售价35。9839。98万!这些都不是重点,重点是理想L8的产品力真的很有看点,那么,从产品细节来看,理想L8能否成功狙击近期上市的竞品们?大气!大气!在自主品特斯拉前三季汽车累计交付量超90万,完成全年150万辆目标或承压10月3日,特斯拉披露了其最新销量数据。数据显示,2022年第三季度,特斯拉全球生产了36。5923万辆汽车,交付了34。383万辆汽车。不过据外媒援引机构观点,称特斯拉当季交付量