PriorityBlockingQueue是一个基于数组实现的线程安全的无界队列,原理和内部结构跟PriorityQueue基本一样,只是多了个线程安全。javadoc里面提到一句,1:理论上是无界的,所以添加元素可能导致outofmemoryerror;2.不容许添加null;3.添加的元素使用构造时候传入Comparator排序,要不然就使用元素的自然排序。
PriorityBlocking...
分类:
其他好文 时间:
2016-07-10 19:04:18
阅读次数:
236
若有不正之处请多多谅解,并欢迎批评指正。 请尊重作者劳动成果,转载请标明原文链接: http://www.cnblogs.com/go2sea/p/5634701.html ReentrantLock提供了标准的互斥操作,但在应用中,我们对一个资源的访问有两种方式:读和写,读操作一般不会影响数据的一 ...
分类:
编程语言 时间:
2016-07-02 06:58:46
阅读次数:
467
根据锁的添加到Java中的时间,Java中的锁,可以分为"同步锁"和"JUC包中的锁"。
同步锁
即通过synchronized关键字来进行同步,实现对竞争资源的互斥访问的锁。Java 1.0版本中就已经支持同步锁了。
同步锁的原理是,对于每一个对象,有且仅有一个同步锁;不同的线程能共同访问该同步锁。但是,在同一个时间点,该同步锁能且只能被一个线程获取到。这样,获取到同步锁的线程就能...
分类:
编程语言 时间:
2016-07-01 11:58:29
阅读次数:
233
JUC,即java.util.concurrent. 悲观锁和乐观锁 悲观锁和乐观锁是一种思想。 悲观锁,持有一种悲观的态度,认为会出现很坏的情况,所以,先做预防措施。独占锁是一种悲观锁,synchronized就是一种独占锁。 而乐观锁,则是持有一种持有种乐观的态度,认为不会出现什么问题,有问题了 ...
分类:
其他好文 时间:
2016-06-30 23:23:29
阅读次数:
382
若有不正之处请多多谅解,并欢迎批评指正。 请尊重作者劳动成果,转载请标明原文链接: http://www.cnblogs.com/go2sea/p/5627539.html ReentrantLock是JUC包提供的一种可重入独占锁,它实现了Lock接口。与Semaphore类似,Reentrant ...
分类:
编程语言 时间:
2016-06-29 17:18:10
阅读次数:
338
若有不正之处请多多谅解,并欢迎批评指正。 请尊重作者劳动成果,转载请标明原文链接: http://www.cnblogs.com/go2sea/p/5625536.html Semaphore是JUC包提供的一个共享锁,一般称之为信号量。 Semaphore通过自定义的同步器维护了一个或多个共享资源 ...
分类:
编程语言 时间:
2016-06-29 06:39:21
阅读次数:
262
NBA这赛季结束,勇士可惜啊,谁能想到没拿到冠军,库昊也没成为真正的老大,lbl一战封神,所有口水留言都变成羡慕嫉妒恨,哎,我库啊,还是还是看书吧。
ConcurrentSkipListMap说实话,之前还真没注意过,还是看JUC才看到,利用skiplist跳表结构来实现一种有序的map,之前看到的map都是无序。在学习前还是要好好了解下什么是skiplist跳表,的确很不错,利用空间换时间,复...
分类:
其他好文 时间:
2016-06-23 13:00:25
阅读次数:
266
原文: http://www.open-open.com/lib/view/open1462871898428.html 一个简单的单例示例 单例模式可能是大家经常接触和使用的一个设计模式,你可能会这么写 上面代码大家应该都知道,所谓的线程不安全的懒汉单例写法。在UnsafeLazyInitiall ...
分类:
编程语言 时间:
2016-06-14 01:06:53
阅读次数:
308
好几天没看juc了,之前看了HashMap,还有个差不多的HashTable,二者的结构大致相同,小小的比较下2者的不同:
1.HashMap是非线程安全的,HashTable通过synchronized加锁实现线程安全。如果我们的代码里存在{get();...;put()}这种操作的话就保证不了;
2.HashMap可以存储key或value为null的值,HashTable不行;
3.初...
分类:
其他好文 时间:
2016-06-12 03:29:07
阅读次数:
171
http://www.cnblogs.com/skywang12345/p/java_threads_category.html障碍器CyclicBarrier概述Java5中,添加了障碍器类,为了适应一种新的设计需求,比如一个大型的任务,常常需要分配好多子任务去执行,只有当所有子任务都执行完成时候,才能执行主任务,这时候,就可以选择障碍器了。CyclicBarrier是一个同步辅助类,允许一组线程...
分类:
其他好文 时间:
2016-06-12 02:52:52
阅读次数:
139