java并发编程实战 笔记:任务执行

excutor框架

excutor框架将任务的提交和执行分离开,任务提交会遍布到程序的各个地方,但执行策略的设置可以在一个地方,如用线程池执行还是串行执行,线程池固定长度还是变长,所有显示地使用new Thread(task)的地方都应该考虑下excutor框架

携带结果的任务callable和future

线程执行任务的构建有三种方法,1. 继承thread。2. 实现runnable接口。3. 实现callable接口。callable的抽象能有一个返回值表示任务的结果,在excutor里提交callable任务,可以返回Future对象,Future对象包装了整个任务的生命周期,可以获取返回值。

任务执行异常

Future的get获取callable执行结果,会抛出In'te'rru'p'tedException,ExcutionException,Can'ce'lationException,TimeoutException

当任务中有异常抛出的时候,调用Future的get获取结果的时候,会抛出ExcuteException,可以调用e.getCause获取真正的异常。

CompletionService

如果有多个并行任务,在获取结果的时候一个个调用对应的Future的get,如果需要先完成的先处理,则这种方式无法做到。可以使用CompletionService,内部会关联一个excutor用来提交任务,调用CompletionService的take方法来返回已完成任务的Future结构

为任务设置时限

Future的get方法可以设置timeout,还可以调用cancel方法(一般在timeout后会调用cancel方法)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值