慕课网高并发实战(八)- J.U.C-Future

传统线程两种实现方式的确定无法获取线程结果

&& Callable与Runnable接口对比:

Callable是一个泛型

&& Future 接口

future :可以查询任务是否取消,取消任务,查询是否完成,获取结果

future可以得到其他线程执行结果的返回值

&& FutureTask 类

父类是:Runnable, future

可以像runnable作为线程执行,也可以像future返回线程执行的结果


7.3 Fork/Join 框架

将大任务分割成若干个小任务,最后汇总

工作窃取算法



工作窃取算法是指:某个线程从其他队列里窃取任务来执行

双端队列: 被窃取任务的线程从双端队列的头部拿任务执行

窃取任务的线程从双端队列的尾部拿任务执行

充分利用了线程进行并行计算

存在竞争:消耗了系统资源,创建了线程,多个队列

局限:

1 任务只能使用fork/join 实现同步机制

2  任务不应该执行io

3 任务不能抛出检查异常


ForkJoinPool :负责实现,工作窃取算法,管理工作线程,已经任务的状态

ForkJoinTask:  负责提供Join Fork 执行的机制


8.4 BlockingQueue





&& ArrayBlockingQueue 有界的阻塞队列,内部实现是数组 先进先出

&& DelayQueue   元素需要排序  定时关闭连接,缓存对象 超时处理

&& LinkedBlockingQueue 内部实现是链表 先进先出

&& PriorityBlockingQueue 带优先级的队列,没有边界 ,有排序规则  插入的对象必须实现Comparable接口

&& SynchronousQueue   只存储一个对象

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容