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

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

作者: 景行lau | 来源:发表于2018-03-30 17:04 被阅读0次

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

&& 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   只存储一个对象

相关文章

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

    传统线程两种实现方式的确定无法获取线程结果 && Callable与Runnable接口对比: Callable是...

  • Java高并发 -- 并发扩展

    Java高并发 -- 并发扩展 主要是学习慕课网实战视频《Java并发编程入门与高并发面试》的笔记 死锁 死锁是指...

  • Java高并发--AQS

    Java高并发--AQS 主要是学习慕课网实战视频《Java并发编程入门与高并发面试》的笔记 AQS是Abstra...

  • Java高并发--CPU多级缓存与Java内存模型

    Java高并发--CPU多级缓存与Java内存模型 主要是学习慕课网实战视频《Java并发编程入门与高并发面试》的...

  • Java高并发 -- 线程池

    Java高并发 -- 线程池 主要是学习慕课网实战视频《Java并发编程入门与高并发面试》的笔记 在使用线程池后,...

  • Java高并发--安全发布对象

    Java高并发--安全发布对象 主要是学习慕课网实战视频《Java并发编程入门与高并发面试》的笔记 发布对像:使一...

  • Java高并发--消息队列

    Java高并发--消息队列 主要是学习慕课网实战视频《Java并发编程入门与高并发面试》的笔记 举个例子:在购物商...

  • Java高并发--线程安全策略

    Java高并发--线程安全策略 主要是学习慕课网实战视频《Java并发编程入门与高并发面试》的笔记 不可变对象 发...

  • Java高并发 -- J.U.C.组件扩展

    Java高并发 -- J.U.C.组件扩展 主要是学习慕课网实战视频《Java并发编程入门与高并发面试》的笔记 F...

  • 参考标记说明

    说明:慕课网并发与高并发课程

网友评论

      本文标题:慕课网高并发实战(八)- J.U.C-Future

      本文链接:https://www.haomeiwen.com/subject/kazvcftx.html