ThreadPoolExecutor源码中的适配器模式
什么是适配器模式 网上已有很多的教程,不细讲了。可以参考: 五分钟了解设计模式(3)---适配器模式 在适配器模式中,一定要识别清楚,Target Adaptee Adapter分别是哪些类或接口,这样才能知道是谁转成谁。 Target: 最终给上下文调用的类 Adaptee: 被适配的类,即需要转成Target Adapter: 将Target和Adaptee连接起来,起转换作用 ThreadPoolExecutor中submit方法用到的适配器模式 ThreadPoolExecutor类提供了submit方法,共有3个重载。这三个方法最终调用到的是execute(Runnable r) 方法,返回一个Future对象,相比直接调用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