并发编程之知识梳理 第二部分

12 篇文章 0 订阅
11 篇文章 0 订阅

你好! 这是我对于Java 并发编程相关知识点的梳理与思考,希望对你能有所帮助;菜鸟萌新,问题多多,欢迎指出,谢谢!(全文链接: 点击在线查看清晰思维导图.)
本文章以图为主,如果文章中没有图片,麻烦移步: 链接.

全文内容

线程池

好处

实现原理

线程池的主要处理流程

ThreadPoolExecutor执行示意图

使用

创建

向线程池提交任务

关闭

合理地配置线程池

线程池的监控

Executor

框架简介
两级调度模型

结构

类与接口


使用示意图


成员

ThreadPoolExecutor




ThreadPoolExecutor执行任务示意图:

CachedThreadPool的execute()的运行示意
ThreadPoolExecutor执行任务示意图

CachedThreadPool的任务传递示意图:

ScheduleThreadPoolExecutor

ScheduledThreadPoolExecutor的任务传递示意图:

ScheduledThreadPoolExecutor的任务执行步骤:



FutureTask



FutureTask的设计示意图:

FutureTask的级联唤醒示意图:


容器和框架

ConcurrentHashMap



ConcurrentLinkedQueue

Java中的阻塞队列

Fork/Join框架

是什么?

工作窃取算法

异常处理

并发工具类

CountDownLatch

在完成一组正在其他线程中执行的操作之前,它允许一个或多个线程一直等待。

  • 基于AbstractQueuedSynchronizer实现,state初始化为count,每countDown一次减1直到等于0,
  • unpark唤醒await线程
重要方法:
  • await():调用此方法线程会被阻塞,直到count为0
  • await(long timeout, TimeUnit unit):同await(),可以设置最大等待时间,如超过最大等待时间,则不再等待
  • countDown():count减1,直至为0
为什么不使用ReentrantLock?

countDown不需要堵塞,只需要在最后一次count=0时去唤醒堵塞的主线程(await),AQS+LockSupport完全够用。

Semaphore

  • 计数信号量,用于控制特定资源在同一个时间被访问的个数
  • 基于AbstractQueuedSynchronizer实现,支持公平和非公平信号量,默认非公平信号量,state初始化为permits。

CyclicBarrier

  • 一个可循环使用(Cyclic)的屏障(Barrier),让一组线程到达一个屏障(同步点)时被阻塞,直到最后一个线程到达屏障时,屏障才会放行,所有被屏障拦截的线程继续执行。
  • 基于ReentrantLock+Condition实现,await后先lock,然后–count,不等于0就执行Condition.await。反之,重置count并执行Condition.signalAll唤醒所有堵塞线程。
重要方法:
  • await():在CyclicBarrier上进行阻塞等待,并使count减1
  • await(long timeout, TimeUnit unit):在CyclicBarrier上进行限时的阻塞等待,并使count减1,当时间到达限定时间后,线程继续执行
  • getParties():获取CyclicBarrier通过屏障的线程数量,也称为方数
  • getNumberWaiting():获取正在CyclicBarrier上等待的线程数量

Phaser

Exchanger

原子操作类

引用

[1]: 链接: https://mp.weixin.qq.com/s/-PRq4ChaCkEFB_DJyyKhvg
[2]: 《Java并发编程的艺术》 方腾飞 魏鹏 程晓明
[3]: 《Java并发编程之美》翟陆续,薛宾田

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值