线程池采用了池化思想,能够有效的管理线程的生命周期,减少了每次获取资源的斲丧,提高了资源的利用率。雷同池化实现还有数据库连接池、HTTP连接池等利益
Executor框架为Java 5 引入,将传统线程的操控方法进行优化升级,使其针对不同 场景更加的机动、管理更加的方便,其核心jar包为java.util.concurrent,简称JUC。别的,很重要的一点,该框架还避免了 this逃逸题目。Executor框架主要包罗三个部分
this逃逸:指在构造函数返回之前,其他线程持有了该对象的引用,此时引用该对象调用其方法时,可能会出现欠好排查的异常。
以ThreadPoolExecutor为例,ThreadPoolExecutor继承了AbstractExecutorService(抽象函数)的submit方法,而且实现了AbstractExecutorService来自Executor接口的execute方法,因此在调用线程池的submit方法时就会通过ThreadPoolExecutor的execute将任务(Runnabale/Callable为核心的RunnableFuture对象)加到工作队列中(addWorker方法实现),返回值则通过RunnableFuture对象的情势返回。简单来说就是主线程将Runnabale/Callable对象通过submit方法提交给线程池,线程池通过内部调度按照不同的策略执行多线程任务,然后通过返回的Futrure对象的get方法取出执行结果。
线程池实现类 ThreadPoolExecutor 是 Executor 框架最核心的类主线程提交任务后
欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) | Powered by Discuz! X3.4 |