并行笔记

阻塞队列:

支持操作

  • add:增加一个元素:满,抛异常
  • remove:移除并返回队列头部的元素:空,抛异常
  • element:返回队列头部元素:空,抛异常
  • offer:添加一个元素并返回true:满,返回false
  • poll:移除并返回头部元素:空,返回null
  • peek:返回队列头部的元素:空,返回null
  • put:添加一个元素:满,阻塞
  • take:移除并返回队列头部的元素:空,阻塞

四种实现

  • LinkedBlockingQueue
  • ArrayBlockingQueue
  • PriorityBlockingQueue
  • DelayQueue

Callable

Runnable封装一个异步运行的任务。
Callable和Runnable相似,但它有返回值。

FutureTask:构造函数(callable task) 或者 (runable task,V result)
future:get,cancel
callable:call

三者的关系
利用Callable创建一个FutureTask并用它启动一个Thread,因为FutureTask同时也实现了runable接口

Executor 执行器

Executor类拥有大量的涌来构建线程池的静态工厂,他们是:

  • newCachedThreadPool:在需要时创建新线程,空闲线程会被保留60秒
  • newFixedThreadPool:创建一个大小固定的线程池,提交任务大于空闲线程数,得不到服务的将被放到队列中。
  • newSingleThreadExecutor:大小为1的线程池,由一个线程依次执行队列中的任务。

他们都返回一个实现ExecutorService的ThreadPoolExecutor类的对象。
调用submit()来提交一个runable或callable对象
如果希望取消任务或者提交了一个callable对象,保存好返回的Future对象
当不想提交任何任务的时候调用shutdown

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值