首页
沸点
课程
数据标注
HOT
AI Coding
更多
直播
活动
APP
插件
直播
活动
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
登录
注册
教主陈
掘友等级
thoughtworks
获得徽章 0
动态
文章
专栏
沸点
收藏集
关注
作品
赞
10
文章 10
沸点 0
赞
10
返回
|
搜索文章
最新
热门
阻塞队列简介
阻塞队列是并发编程中常用的类,而且是线程池的基础,Jdk中有七个阻塞队列的类,本篇我们一起对比下它们的区别和使用场景,一起看公共接口BlockingDeque,看不同方法的区别。阻塞队列测试代码可在github中下载 ArrayBlockingQueue: 是用数组实现的有界阻…
Atomic+源码分析
jdk1.5后提供了一些原子操作的类,应用开发者使用起来,更加简单、高效、更加安全的进行并发更新变量。这些原子类都在java.util.concurrent.atomic包下。总体来说,有五类原子类。 结果可以看到,普通的Integer在多线程中共享,i++操作会使结果错误。而…
CyclicBarrier源码分析
CyclicBarrier循环屏障,可以实现让一组线程相互等待,一组线程到达该等待点后同时继续往下执行,CyclicBarrier计数清零,然后进行下一次计数。 可以理解为奥运赛道,因为只有8个赛道,裁判员一次只让8名选手赛跑,8名选手全部就绪,裁判员发号施令,选手们同时起跑,…
Semaphore源码分析
Semaphore是信号量的意思,可以理解为高速路口的收费站,每次只允许最多N个车辆通过,每个车辆通过以后,后续车辆可以通过。可以对有限的公共资源设置并发量。比如有上万个文件进行文件处理,并且处理后要进行一些并要的入库。可以开辟几十个线程进行IO处理,但因为数据库连接池资源有限…
CountDownLatch源码分析
CountDownLatch可以翻译为倒计数器,让主调用线程等待其他一些线程工作完成后,再继续运行。(相当于调用所有子线程join方法的效果) 第一种设置两个信号,一个是启动信号,当控制线程发出信号以后,所有线程才开始工作,一个是全部完成的信号,当所有工作线程完成后,控制线程才…
Condition 源码分析
我们知道synchronized通过使用Object.wait、Object.notify方法,可以实现条件等待、唤醒操作。 Lock怎么实现这些呢?就是通过Condition接口实现的。Condition接口的实现类ConditionObject是AbstractQueued…
ReentrantLock源码分析
上一篇看了AbstractQueuedSynchronizer的源码,了解AQS以后,写一个锁就非常简单了。分析ReentrantLock前先看一个简单实现的不可重入的独占锁的例子。 可以看到写一个独占锁类非常简单,实现Lock接口,内部定义一个队列同步器,重写tryAcqui…
AbstractQueuedSynchronizer 源码分析
今天聊下并发编程中很重要的一个类AbstractQueuedSynchronizer,简称AQS,为什么说他重要?并发库作者Doug Lea设计之初就是期望它能够成为实现大部分同步需求的基础。因此看懂了它,将很容易学习(ReentrantLock、ReentrantReadWr…
Thread Interrupt方法
如果线程在调用 Object 类的 wait()、wait(long) 或 wait(long, int) 方法,或者该类的 join()、join(long)、join(long, int)、sleep(long) 或 sleep(long, int) 方法过程中受阻,则其中…
Java并发编程基础
并发编程是Java程序员最重要的技能之一,也是最难掌握的技能之一。很多情况下我们不敢轻易使用,因为不了解其底层原理,很可能踩坑。接下来一段时间就来学习并发编程的底层类源码。 本篇先了解并发编程的基础。 上图是从并发编程的艺术书中摘录。简单解释一下。 当调用Thread.star…
下一页
个人成就
文章被点赞
16
文章被阅读
31,785
掘力值
708
关注了
13
关注者
12
收藏集
0
关注标签
4
加入于
2019-08-12