初始化线程4种方式
Thread
Runnable
Callable 允许有返回值
FutureTask接受Callalbe,runnable futureTask.get()阻塞获取结果
以上3种方式都不愿,所有异步任务交给线程池执行
线程池
ExcutorService
同时获取/查询多种信息
获取之间有依赖
代码实现:
CompletableFuture、(lamda表达式)
线程池,executor
启动任务,CompletableFuture.runAsync(()->{
},executor); 无返回值
future = CompletableFuture.supplyAsync —return 带返回值
future.get 阻塞获取返回值
异步成功后回调
whenComplete 完成后当前线程继续执行
whenCompleteAsync 完成后异步执行
whenComplete((result, exception )->{
//捕获异常,不能修改结果
}).exceptionally 异常后,返回默认值
方法完成后的处理
handle 处理
线程串行化方法
thenRun//无上一步结果
thenApply//有上一步结果,处理后继续返回
thenAccept//感知到上一步的结果