执行器(Executors)类有许多静态方法工厂,用来构建线程池。
方法 | 描述 |
---|---|
newCachedThreadPool | 必要时创建线程,线程保存时间60s |
newFixedThreadPool | 创建指定数目的线程,空闲线程会一直保留 |
newWorkStealingPool | 一种“fork-join“任务的线程池,复杂的任务会分解为更简单的任务,空闲线程会“密取”简单的任务。 |
newSingleThreadExecutor | 只有一个线程的“池”,会顺序执行提交的任务 |
newScheduledThreadPool | 用户调度执行的固定线程池 |
newSingleThreadScheduledExecutor | 用于调度执行的单线程“池” |
fork-join框架使用了一种有效的只能方法来平衡可用线程的工作负载,这种方法称为工作密取。每个工作线程都有一个双端队列来完成任务。一个子任务将子任务压入其双端队列的队头。一个工作线程空闲时,它会从另一个双端队列的队尾密取一个任务。
fork-join池针对非阻塞工作负载优化。如果增加了许多阻塞任务,将不能有效的工作。可以让任务实现ForkJoinPool.ManagedBlocker接口来解决这个问题