多线程
yueloveme
这个作者很懒,什么都没留下…
展开
-
阻塞队列之SynchronousQueue
SynchronousQueue 当一个写线程,写入数据时,不会立即返回而是等待一个读线程读取数据之后才会返回。 队列要么是空队列,要么是只有一个线程(读/写)的队列。 可以选择公平模式和非公平模式 构造器 //可以看到可以选择公平模式和非公平模式 public SynchronousQueue() { this(false); } public Synchr...原创 2019-03-19 21:43:35 · 157 阅读 · 0 评论 -
AQS实现共享锁
目录 共享锁 CountDownLatch 作用: 构造函数 内部类Sync countDown releaseShared(1) tryReleaseShared(arg) doReleaseShared() await tryAcquireShared doAcquireSharedInterruptibly CycliBarrier 作用: 属性: 构造器: ...原创 2019-03-18 19:52:38 · 877 阅读 · 0 评论 -
ArrayBlockingQueue/LinkedBlockingQueue
ArrayBlockingQueue 数组,ReentranLock,Condition实现,必须指定数组大小。其实很好分析,读写都必须获取锁。利用两个condition来实现,当队列为空时,如果读线程来那元素,就让读线程等待(Condition.await());如果时写线程就向数组中添加元素,对应的下一次写操作元素位置等数组操作,并且执行notEmput.signal()方法。当队列满的情况...原创 2019-03-18 21:23:43 · 358 阅读 · 0 评论 -
PriorityBlockingQueue
最近一直在忙公司新业务流程引擎,耽误了最后一个阻塞队列,之后把流程引擎结合springboot总结一下 PriorityBlockingQueue 描述: 带排序的BlockingQueue实现,采用ReentrantLock控制并发,队列为无界队列,与其他阻塞队列不同的是PriorityBlockingQueue只能指定初始队列大小,后面插入元素的时候,如果空间不够的话会自动扩容。Arra...原创 2019-03-23 21:02:28 · 448 阅读 · 0 评论