概要 AtomicIntegerArray, AtomicLongArray, AtomicReferenceArray这3个数组类型的原子类的原理和用法相似。本章以AtomicLongArray对数组类型的原子类进行介绍。内容包括:AtomicLongArray介绍和函数列表AtomicLongA ...
分类:
编程语言 时间:
2017-01-06 00:56:23
阅读次数:
306
概要 本章,我们对JUC包中的信号量Semaphore进行学习。内容包括:Semaphore简介Semaphore数据结构Semaphore源码分析(基于JDK1.7.0_40)Semaphore示例 转载请注明出处:http://www.cnblogs.com/skywang12345/p/353 ...
分类:
编程语言 时间:
2016-11-14 22:32:19
阅读次数:
528
概要 本章介绍JUC包中的CyclicBarrier锁。内容包括:CyclicBarrier简介CyclicBarrier数据结构CyclicBarrier源码分析(基于JDK1.7.0_40)CyclicBarrier示例 转载请注明出处:http://www.cnblogs.com/skywan ...
分类:
编程语言 时间:
2016-11-14 22:28:48
阅读次数:
329
1.CyclicBarrier 字面意思是可循环(Cyclic)使用的屏障(Barrier)。它要做的事情是让一组线程到达一个屏障(同步点)时被阻塞,直到最后一个线程到达屏障时候,屏障才会开门。所有被屏障拦截的线程才会运行。 2.常用的方法: 3.底层原理实现 CyclicBarrier是由Reen ...
分类:
其他好文 时间:
2016-11-14 01:50:55
阅读次数:
596
1.控制并发线程数的Semaphore Semaphore(信号量)是用来控制同时访问特定资源的线程数量,它通过协调各个线程,保证合理的使用公共资源。 线程可以通过acquire()方法来获取信号量的许可,当信号量中没有可用的许可的时候,线程阻塞,直到有可用的许可为止。线程可以通过release() ...
分类:
其他好文 时间:
2016-11-14 01:21:20
阅读次数:
145
项目中经常使用定时器,比如每隔一段时间清理下线过期的F码,或者应用timer定期查询MQ在数据库的配置,根据不同version实现配置的实时更新等等。但是timer是存在一些缺陷的,因为Timer在执行定时任务时只创建一个线程,所以如果存在多个任务,比如两个,第一个任务执行的时间很长,超过两个任务执 ...
分类:
其他好文 时间:
2016-11-08 13:55:42
阅读次数:
245
1.什么是AQS? AQS的核心思想是基于volatile int state这样的volatile变量,配合Unsafe工具对其原子性的操作来实现对当前锁状态进行修改。同步器内部依赖一个FIFO的双向队列来完成资源获取线程的排队工作。 2.同步器的应用 同步器主要使用方式是继承,子类通过继承同步器 ...
分类:
其他好文 时间:
2016-11-04 20:37:11
阅读次数:
259
在JUC包中,线程池部分本身有很多组件,可以说是前面所分析的各种技术的一个综合应用。从本文开始,将综合前面的知识,逐个分析线程池的各个组件。
-Executor/Executors
-Thread...
分类:
编程语言 时间:
2016-09-30 09:58:32
阅读次数:
270
CountDownLatch 是能使一组线程等另一组线程都跑完了再继续跑;CyclicBarrier 能够使一组线程在一个时间点上达到同步,可以是一起开始执行全部任务或者一部分任务。 CountDownLatch、CyclicBarrier 和 Semaphore 这三个是 JUC 中较为常用的同步 ...
分类:
编程语言 时间:
2016-09-08 18:07:27
阅读次数:
154
LinkedBlockingDeque基于双向链表实现的阻塞队列,根据构造传入的容量大小决定有界还是无界,默认不传的话,大小Integer.Max。
实现BlockingDequeue接口,这个接口继承BlockingQueue和Dequeue,看下接口方法:
public interface BlockingDeque extends BlockingQueue, Deque {
/** ...
分类:
数据库 时间:
2016-07-13 17:11:03
阅读次数:
252