AQS框架提供的另外一个优秀机制是锁获取超时的支持,当大量线程对某一锁竞争时可能导致某些线程在很长一段时间都获取不了锁,在某些场景下可能希望如果线程在一段时间内不能成功获取锁就取消对该锁的等待以提高性能,这时就需要用到超时机制。在JDK1.5之前还没有juc工具,当时的并发控制职能通过JVM内置的synchronized关键词实现锁,但对一些特殊要求却力不从心,例如超时取消控制。JDK1.5开始引...
分类:
编程语言 时间:
2014-12-27 21:50:36
阅读次数:
247
这篇讲讲ReentrantLock可重入锁,JUC里提供的可重入锁是基于AQS实现的阻塞式可重入锁。这篇
聊聊高并发(十六)实现一个简单的可重入锁 模拟了可重入锁的实现。可重入锁的特点是:
1. 是互斥锁,基于AQS的互斥模式实现,也就是说同时只有一个线程进入临界区,唤醒下一个线程时也只能释放一个等待线程
2. 可重入,通过设置了一个字段exclusiveOwnerThread来标示当前获...
分类:
编程语言 时间:
2014-11-11 19:21:34
阅读次数:
616
分享JUC中的Condition的比较少见,我见了大部分文章都是讲其中的一个例子BoundedBuffer。今天先从Condition接口的几个方法说起,然后在把BoundedBuffer搞死锁了。来看看Condition在使用的时候需要注意什么。 源代...
分类:
其他好文 时间:
2014-08-18 18:56:03
阅读次数:
305
A synchronization point at which threads can pair and swap elements within pairs. Each thread presents some object on entry to the
exchange method, matches with a partner thread, and receives its par...
分类:
其他好文 时间:
2014-08-11 17:57:12
阅读次数:
303
JDK5.0之前,用java实现生产者和消费者的唯一方式就是使用synchronized内置锁和wait/notify条件通知机制。JDK5.0之后提供了显示锁Lock和条件队列Condition,与内置锁和内置条件队列相对应,但是显示的锁和条件队列,功能更强大,更灵活。此外JDK5.0之后还提供了大量很有用的并发工具类,如BlockingQueue等,基于这些数据结构,能够方便、快速、高效的构建...
分类:
其他好文 时间:
2014-08-07 23:11:55
阅读次数:
450
LockSupport类是Java6(JSR166-JUC)引入的一个类,提供了基本的线程同步原语。LockSupport实际上是调用了Unsafe类里的函数,归结到Unsafe里,只有两个函数:
?
1
2
public
native
void
unpark(Thread jthread);
public...
分类:
编程语言 时间:
2014-08-05 15:52:40
阅读次数:
341
在JavaSE5中,JUC(java.util.concurrent)包出现了在java.util.concurrent包及其子包中,有了很多好玩的新东西:1、执行器的概念和线程池的实现。Executor、ExecutorService框架 从Executor接口开始,到ExecutorServi....
分类:
编程语言 时间:
2014-07-06 18:38:33
阅读次数:
224