Callable<> 接口

java 线程池开启 java 线程池实现方式_多线程

java 线程池开启 java 线程池实现方式_线程池_02


FutureTask是实现了runable的子接口的,而他的构造可以接收callable,这样new Thread就可以传这个callable了

java 线程池开启 java 线程池实现方式_java_03

线程池

线程池优势

java 线程池开启 java 线程池实现方式_java 线程池开启_04

线程池常用的几个方式

java 线程池开启 java 线程池实现方式_多线程_05


这个不是重点,知道即可,加上java8新出大多一共5种

带调度的-Executors.newScheduledThreadPool()

Executors.newScheduledThreadPool()

这是带调度的线程池例如我要每5秒执行一次

线程池

4种获得多线程的方法:
 - 继承Thread类
 - 实现Runable接口	但是这个无返回无异常
 - 实现Callable接口	有返回可抛异常
 - 获得和使用多线程方法 线程池方式

ead类

这三个最重要,最常用的3个线程池:

java 线程池开启 java 线程池实现方式_多线程_06

Executors.newFixedThreadPool(int) //固定线程数的线程池
简单理解:一池固定数线程
类似一个一行就5个业务办理窗口

java 线程池开启 java 线程池实现方式_java_07


java 线程池开启 java 线程池实现方式_多线程_08

Executors.newSingleThreadExecutor() //单的
一池一线程

java 线程池开启 java 线程池实现方式_java 线程池开启_09

Executors.newCachedThreadPool() //可扩容带缓存的
一池多线程

java 线程池开启 java 线程池实现方式_多线程_10

java 线程池开启 java 线程池实现方式_多线程_11

ThreadPoolExecutor很重要

线程池5大参数

java 线程池开启 java 线程池实现方式_java 线程池开启_12

ThreadPoolExecutor七大参数

java 线程池开启 java 线程池实现方式_多线程_13


java 线程池开启 java 线程池实现方式_多线程_14

java 线程池开启 java 线程池实现方式_线程池_15

第五个参数workQueue相当于银行的候客区
第六个线程工厂
第七个参数,拒绝策略,防止队列里任务过多 ---->4种拒绝策略

线程池拒绝策略

java 线程池开启 java 线程池实现方式_java_16

以下时几种拒绝策略

java 线程池开启 java 线程池实现方式_多线程_17

java 线程池开启 java 线程池实现方式_java 线程池开启_18


java 线程池开启 java 线程池实现方式_线程池_19

关于手写线程池的基本线程数设置

java 线程池开启 java 线程池实现方式_线程池_20


java 线程池开启 java 线程池实现方式_多线程_21

java 线程池开启 java 线程池实现方式_多线程_22


密集型两种方式

java 线程池开启 java 线程池实现方式_java_23

java 线程池开启 java 线程池实现方式_java 线程池开启_24