hi,你好!欢迎访问本站!登录
本站由网站地图腾讯云宝塔系统阿里云强势驱动
当前位置:首页 - 教程 - 杂谈 - 正文 君子好学,自强不息!

ThreadPoolExecutor源码中的适配器形式

2019-11-18杂谈搜奇网14°c
A+ A-

什么是适配器形式

网上已有许多的教程,不细讲了。能够参考:五分钟相识设想形式(3)---适配器形式
在适配器形式中,一定要辨认清晰,Target Adaptee Adapter分别是哪些类或接口,如许才晓得是谁转成谁。
Target: 终究给上下文挪用的类
Adaptee: 被适配的类,即须要转成Target
Adapter: 将Target和Adaptee连接起来,起转换作用

ThreadPoolExecutor中submit要领用到的适配器形式

ThreadPoolExecutor类供应了submit要领,共有3个重载。这三个要领终究挪用到的是execute(Runnable r) 要领,返回一个Future范例的对象(详细为FutureTask范例),比拟直接挪用execute(Runnable r)要领,挪用方能够获得使命实行的效果。三个submit要领, 都运用了适配器形式,才将顺遂挪用execute(Runnable r)要领。
  

  • 先看看public Future submit(Callable task)
    在这个要领中,Target是Runnable(由于execute要领的参数是Runnable范例),Adaptee是Callable。JDK运用了FutureTask类作为Adapter. FutureTask类的继续关联以下

完成了Runnable,能够传参给execute要领;完成了Future,能够返回给挪用方。
FutureTask作为Adapter,采纳的是“类适配器体式格局”,持有一个Callable(即Adaptee)。

  • 再看看public Future submit(Runnable task, T result)
    同样是包装成FutureTask范例,那末只要将Runnable转成FutureTask就能够了。上面说到FutureTask也是完成了Runnable,那为何还要转换呢?由于FutureTask还完成了Future接口,功能上比Runnable更壮大,同时要返回给挪用方,供应运转效果。
    当前我们有一个Runnable和示意效果的参数,须要适配成FutureTask。前面我们已晓得,FutureTask起到Adapter的作用,它持有一个Callable成员变量。假如没有上面的剖析,那末FutureTask能够改成持有Runnable,但现在它已是持有Callable成员变量了,所以,还要再做一次适配,将Runnable适配成Callable.
    在这个例子中,Target是Callable,Adaptee是Runnable,Adapter是RunnableAdapter。
    RunnableAdapter运用“类适配器体式格局”

  • 末了一个public Future<?> submit(Runnable task)
    与上一个要领相似,只不过是运转效果为null.

总结

在ThreadPoolExecutor的三个submit要领中,都运用了适配器形式,都运用了个中的“类适配器体式格局”。
submit要领都返回FutureTask,该范例能够获得运转效果。
submit要领都挪用了execute(Runnable r)要领实行使命,传入的详细范例为FutureTask。因而,Target是Runnable,Adapter是FutureTask,Adaptee则是差别的传入参数。
FutureTask的完成体式格局是持有一个Callable范例的成员变量,因而,关于传入参数为Callable的状况,直接赋值,关于传入参数为Runnable的状况,须要再做一次适配,将Runnable适配成Callable. 在这个转换过程当中,Target是Callable,Adaptee是Runnable,Adapter是RunnableAdapter。

  选择打赏方式
微信赞助

打赏

QQ钱包

打赏

支付宝赞助

打赏

  移步手机端
ThreadPoolExecutor源码中的适配器形式

1、打开你手机的二维码扫描APP
2、扫描左则的二维码
3、点击扫描获得的网址
4、可以在手机端阅读此文章
未定义标签

本文来源:搜奇网

本文地址:https://www.sou7.cn/282121.html

关注我们:微信搜索“搜奇网”添加我为好友

版权声明: 本文仅代表作者个人观点,与本站无关。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。请记住本站网址https://www.sou7.cn/搜奇网。

发表评论

选填

必填

必填

选填

请拖动滑块解锁
>>