多线程

4种多线程方式

1、继承Thread类,实现run方法

2、实现Runnable接口,实现run方法

3、使用ThreadPoolExecutor线程池,执行execute方法

4、实现Callable接口+FutureTask(获取处理结果+处理异常)

5、使用@Asyn注解

Executor有效控制资源开销

可缓存线程池

Executors.newCachedThreadPool()

固定大小线程池

核心线程数=最大线程数

Executors.newFixedThreadPool()

定时线程池

定时或周期性执行任务

Executors.newScheduledThreadPool()

单线程线程池

Executors.newSingleThreadExecutor()

7大参数

核心线程数

最大线程数

存活时间

阻塞队列,有界队列LinkedBlockingDeque

线程创建工厂

拒绝策略,AbortPolicy、DiscardPolicy、CallerRunsPolicy

CompletableFuture异步编排

JDK8,链式调用

另起线程完成调用中的部分计算,不需要等待计算结果

4个方法

无返回值,runAsync(runnable)

指定线程池,runAsync(runnable, executor)

有返回值,supplyAsync(supplier)

有返回值指定线程池,supplyAsync(supplier, executor)

链式调用

whenComplete

感知发生异常,不能处理异常

handle

处理异常

线程串行化

thenApply

获取上一个线程结果,返回当前线程结果

thenAccept

获取上一个线程结果

thenRun

后续操作

任务组合

runAfterBoth

执行第3个任务,不获取结果,无返回值

thenAcceptBoth

获取结果,无返回值

thenCombine

有返回值

任务组合,一个完成即可

runAfterEither

不获取结果,无返回值

acceptEither

获取结果,无返回值

applyEither

获取结果,有返回值

多任务组合

allOf

等待所有任务完成

anyOf

一个任务完成即可

浙ICP备11005866号-12