主要是使用CountDownLatchCountDownlatch,是一种Sychronizer,它可以延迟线程的进度直到线程的进度到线程到达终止状态。它本身而言是Java并发包中非常有用的一个类,它可以让某些任务完成以后再继续运行下面的内容,每个任务本身执行完毕后让计数器减一,直到计数器清零后,以...
分类:
编程语言 时间:
2015-03-06 18:42:13
阅读次数:
237
Spring中的ThreadPoolTaskExecutor是借助于JDK并发包中的java.util.concurrent.ThreadPoolExecutor来实现的。基于ThreadPoolExecutor可以很容易将一个Runnable接口的任务放入线程池中。ThreadPoolExecut...
分类:
编程语言 时间:
2015-03-02 20:37:37
阅读次数:
211
CountDownlatch,是一种Sychronizer,它可以延迟线程的进度直到线程的进度到线程到达终止状态。
它本身而言是Java并发包中非常有用的一个类,它可以让某些任务完成以后再继续运行下面的内容,每个任务本身执行完毕后让计数器减一,直到计数器清零后,以下的内容才可以继续运行,否则将阻塞等待。
CountDownLatch的一个非常典型的应用场景是:有一...
分类:
编程语言 时间:
2015-01-20 22:21:23
阅读次数:
229
Lock 锁介绍
JDK1.5以前,我们实现线程同步都是通过synchroized关键字进行方法或者语句块锁定,以保证该关键字作用域内的操作都是原子性操作。
JDK1.5以后,提供的并发包提供了更强大的功能和更为灵活,最为关键的是需要手工释放锁,需要unlock必须在finally方法内。这是非常值得注意的事情。
介绍一下Lock接口。实现类有3个,分别是 普通锁,读写锁-写...
分类:
编程语言 时间:
2015-01-17 23:35:17
阅读次数:
319
Java线程同步两种途径:
1.synchronized 同步方法或者同步语句块(wait,notify,notifyAll方法)
2.JDK1.5以后有并发编程包,使得以后编程对于线程同步提供了更好的方法。
区别:
相同点:concurrent几乎可以完成synchronized的所有功能。
区别:【1】concurrent包效率高于synchronized。
...
分类:
编程语言 时间:
2015-01-17 22:14:50
阅读次数:
313
1 锁的独占与共享
java并发包提供的加锁模式分为独占锁和共享锁,独占锁模式下,每次只能有一个线程能持有锁,ReentrantLock就是以独占方式实现的互斥锁。共享锁,则允许多个线程同时获取锁,并发访问 共享资源,如:ReadWriteLock。AQS的内部类Node定义了两个常量SHARED和EXCLUSIVE,他们分别标识 AQS队列中等待线程的锁获取模式。
很显...
分类:
编程语言 时间:
2014-12-31 14:40:25
阅读次数:
232
内置锁和内置条件队列一起,一个简单的应用是创建可阻塞的有界缓存区,java并发包的BlockingQueue就是一个利用Lock和显式条件队列实现的可阻塞的有界队列。总结内置锁和内置条件的原理,这里我们用另一种方式实现简单的可阻塞缓存。源码如下:
首先,创建一抽象有界缓存类ABoundedBuffer,提供插入和删除的基本实现。
/**
* @title :AB...
分类:
编程语言 时间:
2014-12-30 11:53:34
阅读次数:
119
在CLH锁核心思想的影响下,Java并发包的基础框架AQS以CLH锁作为基础而设计,其中主要是考虑到CLH锁更容易实现取消与超时功能。比起原来的CLH锁已经做了很大的改造,主要从两方面进行了改造:节点的结构与节点等待机制。在结构上引入了头结点和尾节点,他们分别指向队列的头和尾,尝试获取锁、入队列、释放锁等实现都与头尾节点相关,并且每个节点都引入前驱节点和后后续节点的引用;在等待机制上由原来的自旋改...
分类:
编程语言 时间:
2014-12-26 23:02:18
阅读次数:
370
ThreadPoolExecutor是JDK自带的并发包对于线程池的实现,从JDK1.5开始,直至我所阅读的1.6与1.7的并发包代码,从代码注释上看,均出自Doug Lea之手,从代码上看JDK1.7几乎是重写了ThreadPoolExecutor的实现代码,JDK1.6的实现比较晦涩难懂,不便于...
分类:
其他好文 时间:
2014-12-14 18:25:46
阅读次数:
320
原文:http://blog.csdn.net/ghsau/article/details/7481142
接近一周没更新《Java线程》专栏了,主要是这周工作上比较忙,生活上也比较忙,呵呵,进入正题,上一篇讲述了并发包下的Lock,Lock可以更好的解决线程同步问题,使之更面向对象,并且...
分类:
编程语言 时间:
2014-12-03 17:06:58
阅读次数:
243