游戏电视苹果数码历史美丽
投稿投诉
美丽时装
彩妆资讯
历史明星
乐活安卓
数码常识
驾车健康
苹果问答
网络发型
电视车载
室内电影
游戏科学
音乐整形

Java的Future接口

  Java的Future接口
  Java中的Future接口和其实现类FutureTask,代表了异步计算的结果。1。Future接口简介
  Future是异步计算结果的容器接口,它提供了下面这些功能:在等待异步计算完成时检查计算结果是否完成在异步计算完成后获取计算结果在异步计算完成前取消
  Future可以用于耗时的异步计算任务。例如我们把Runnable接口或Callable接口的实现类提交到线程池时,线程池会返回一个FutureTask对象。TFutureTsubmit(CallableTtask)TFutureTsubmit(RunnableTtask,Tresult)
  下文会再解释FutureTask,这是Future接口的一个实现类。Future接口提供了下面这些方法
  ModifierandType
  Method
  Description
  boolean
  cancel(booleanmayInterruptIfRunning)
  尝试取消执行此任务。
  V
  get()
  等待计算完成,然后检索其结果。
  V
  get(longtimeout,TimeUnitunit)
  如果需要等待最多在给定的时间计算完成,然后检索其结果(如果可用)。
  boolean
  isCancelled()
  如果此任务在正常完成之前被取消,则返回true。
  boolean
  isDone()
  返回true如果任务已完成。2。FutureTask的使用
  可以将FutureTask交给Executor执行,也可以通过ExecutorService。submit(。。。)方法返回一个FutureTask,然后执行get方法或cancel方法。
  也可以单独使用FutureTask,比如下面的代码就实现了一种需求:一个线程必须等待另一个线程把某个任务执行完后它才能继续执行。假设有多个线程执行若干个任务,每个任务最多只能同时被执行一次,多个线程试图执行同一个任务时,只允许一个线程执行任务,其他线程等待这个任务执行完后才能继续执行。publicclassConcurrentTask{privatefinalConcurrentMapObject,FutureStringtaskCachenewConcurrentHashMapObject,FutureString();privateStringexecutionTask(finalStringtaskName)throwsExecutionException,InterruptedException{while(true){FutureStringfuturetaskCache。get(taskName);1。1,2。1if(futurenull){创建TaskCallableStringtasknewCallableString(){publicStringcall()throwsInterruptedException{。。。。。。returntaskName;}};1。2创建FutureTaskFutureTaskStringfutureTasknewFutureTask(task);futuretaskCache。putIfAbsent(taskName,futureTask);1。3如果是第一次放入,则尝试执行if(futurenull){futurefutureTask;futureTask。run();1。4执行任务}}try{returnfuture。get();1。5,2。2线程在此等待任务执行完成}catch(CancellationExceptione){taskCache。remove(taskName,future);}}}}
  相信不难理解,下面是执行的示意图。
  3。FutureTask的实现
  FutureTask的实现基于队列同步器QAS。
  基于复合优先于继承的原则,FutureTask声明了一个内部私有的,继承于AQS的子类Sync,这对FutureTask所有公有方法的调用都会委托给这个内部子类。
  FutureTask的get方法会调用AQS。acquireSharedInterruptibly(intarg)方法,执行过程如下:调用AQS。acquireSharedInterruptibly(intarg)方法,首先回调子类Sync中的方法tryAcqurieShared判断acquire操作是否可以成功。acquire操作成功的条件为:state为执行完成状态RAN或已取消状态CANCELLED且runner不为null。如果成功则get方法立即返回,失败则到线程等待队列中去等待其他线程执行release。当其他线程执行release,如FutureTask。run()和FutureTask。cancel(),唤醒当前线程后。当前线程再次执行tryAcquireShared将返回值1,当前线程离开等待队列并唤醒后续线程。最后返回结果或抛出异常。
  FutureTask的run方法执行过程如下:执行构造函数中指定的任务。原子方式更新同步状态,调用AQS。compareAndSetState如果上面的原子操作成功,设置代表计算结果的变量result的值为Callable。call()的返回指,然后调用AQS。releaseShared(intarg)AQS。releaseShared(intarg)首先回调Sync中的tryReleaseShared(arg)来执行release。这个方法唤醒等待队列中第一个线程。调用FutureTask。done()。
  当调用FutureTask。get()方法时,如果FutureTask不是处于执行完成状态RAN或已取消状态CANCELLED。当前执行线程将到AQS的线程等待队列中等待。
  收藏

你知道这些数学方程改变了人类文明的进程吗?本文转自图灵教育,〔遇见数学〕已获转发授权。数学公式是个很奇妙的东西,它潜藏在我们身边,又不易被察觉。它无比简洁,却能够描述大千世界。从无线电广播到智能手机,从地图……大疆MavicMini2无人机海外开卖249g重,支持4K录感谢IT之家网友角度有点刁钻的线索投递!IT之家10月28日消息根据DroneDJ网站的报道,大疆MavicMini2无人机已经在海外百思买店开卖。大疆MavicM……小米最新组织调整成立可穿戴部,高原为总经理IT之家11月20日消息据网友爆料,小米集团发了一份机密文件,涉及多项人事调整。最大的新闻在于成立可穿戴部,任命高原为可穿戴部总经理。在这之前,小米可穿戴部分包含于手机部……各种疾病的早期信号,太全了!你想知道的都在这里各器官的求救信号1、肾脏的求救信号:脚肿和眼肿2、肝脏的求救信号:脸色发黑3、大脑的求救信号:突然头晕身体某侧肢体麻木或者无力说话不利索行走……英特尔发布90款至强芯片4月3日消息,据国外媒体报道,全球最大的电脑处理器制造商英特尔宣布推出一系列新的服务器芯片,旨在保持其在半导体行业利润最高领域之一的主导地位。据悉,该公司将推出90种不同……错失最佳夺冠窗口太阳还能照常升起吗?回顾上赛季,展望新赛季!一年一度的《30天30队》栏目如约而至,今天为您带来的是菲尼克斯太阳。菲尼克斯人本应是故事的主角。前一年总决赛的失利,让他们202122赛季的征程……索尼将于8月6日发布新款音频设备IT之家7月31日消息索尼中国官方昨日在微博宣布8月6日将有新品发布,但并没有透露其他任何信息。据索尼官方推特今日声明,索尼将于8月6日发布新的音频领域的产品。据外媒engad……三星GalaxyWatchActive2开启预售触摸旋转表圈感谢IT之家网友VVS的线索投递!IT之家10月9日消息据热心网友投稿,三星官方消息,三星GalaxyWatchActive2智能手表开启预售,蓝牙通话、触摸旋转表圈等功……可穿戴设备的抢滩登陆1979年的商业大片《007之太空城》(Moonraker)中,Q博士给邦德佩戴了一块能打电话能爆炸的手表(精工M354),罗杰摩尔腕上的多功能手表,可能要算AppleWatc……华为WatchGT2全新配色公布,P40Pro手机绝配感谢IT之家网友肖战割割的线索投递!IT之家3月19日消息华为终端官方微博今天宣布,在华为P40系列发布会上,还将推出华为WatchGT2的新配色款,绽放你的美时美刻。……评分最高30部电影1、《肖申克的救赎》,豆瓣评分9。7分电影界的里程碑作品,经典中的经典,这部影片是希望最强有力的注释了,我觉得不看的话人生不圆满。2、《霸王别姬》,豆瓣评分9。6分……小米有品上架腿膝足按摩器6组气囊,环绕式包裹按摩IT之家12月19日消息据小米有品官方消息,摩摩哒腿膝足按摩器已经上架,采用6组气囊和环绕式包裹按摩,众筹价格为399元。这款腿膝足按摩器的尺寸为425mm190mm20……
荣耀X40堆足猛料,5300mAh512G6。92英寸大屏幕荣耀作为今年国产手机里唯一还保持销量增长的品牌,也是有两把刷子在身上的,提前发布了magic4系列,荣耀70系列配置也出人意料,荣耀50是今年单品销量TOP2的机型,仅次于iP……哈维我想赢得欧冠,但要说巴萨是热门那还是拉倒吧巴萨主帅哈维出席了与比尔森胜利的赛前新闻发布会明天开始欧冠,对于巴萨来说这个赛季的目标是什么?在花了这么钱之后,您认为巴萨现在有能力和机会为欧冠冠军而战吗?说到目标……国内产能加速释放柔性OLED面板出货量有望继续增长央视网消息:除了手机,柔性OLED在智能手表、平板、笔记本电脑等消费电子产品上的应用也是越来越多,不同品类不同价位的产品持续普及柔性OLED面板,那么这对上游面板生产企业有哪些……思念的味道头号周刊思念;是苦是甜想念;是悲是欢因为思念的人远在天涯远在很远很远的远方不知道何年何月才能见到想念的人、那可爱的模样即然苍天安……难度大!孙颖莎冲击6冠王,三线作战消耗严重,单打最被关注近日,国乒上报了WTT球星赛印度站的参赛名单,大满贯新加坡站孙颖莎已经自动获得了单打资格。由于2站比赛几乎没有间隔,且均设置了女单、女双、混双参赛项目,因此莎莎将上演连轴转式的……盖茨称中国崛起是世界巨大的胜利,中国等国家应更多参与全球治理头条创作挑战赛据美国《福布斯》网站26日报道,微软公司联合创始人比尔盖茨日前在澳大利亚接受采访时表示,中国近几十年来的崛起是世界的巨大胜利。他还说,美国如今在政治上更为衰……冬病夏治一天一杯姜枣茶祛湿养胃夏天每天一杯姜枣茶,帮助身体调理气血,祛湿排毒。特别适合呆在空调房里的人,寒气湿气排出去,身体自然越来越健康。做法如下:大枣6个可以对半切开带皮生……糖尿病,消渴症?送你五味中药,滋阴降火,补中带清现在越来越多的人被糖尿病所困扰,而糖尿病的治疗大都是以西药为主。远志曾被患者咨询过,中药可以治疗糖尿病吗?当然可以,因为古人也会得糖尿病啊!汉代的著名文人司马……LOL英雄联盟手游终极魔典大招搭配,我变大了,也变强了!了解LOL英雄联盟手游新咨询,关注LOL萌闪闪。大家好,我是闪闪。随着4月的到来,英雄联盟手游也是迎来了各种内容更新。就最近上线的全新终极魔典模式是备受各位召唤师们的喜爱。各种……MOREFINE推出M9迷你主机配备N100N200处理器英特尔在CES2023发布了众多新品,包括65W35W的第13代酷睿台式机处理器、第13代酷酷睿移动处理器以及面向入门级计算的N系列处理器,此前报道过有厂商推出配备英特尔N系列……立春后,春季第一鲜记得端上桌,3种做法,应季而食更营养春季代表着温暖、生长,万物复苏,阴阳之气开始转变,可是虽然气候舒适,但是天气变化无常,在民间也一直流传着这样一句话,百草发芽,百病发作。所以春季要更懂得保养,多吃一些营养应季的……LongChina50分析丨省钱大法好,美团时隔6个月再交盈文董洁编辑乔芊不确定的宏观环境下,利润和现金流比以往来的更加重要。收入的增长成为其次,更重要的是减亏。京东Q3在恐怖控费下,实现了有史最大的利润释放,美团也不……
友情链接:易事利快生活快传网聚热点七猫云快好知快百科中准网快好找文好找中准网快软网