importjava.util.concurrent.locks.Condition;
importjava.util.concurrent.locks.Lock;
importjava.util.concurrent.locks.ReentrantLock;
publicclassLockAndUnlockDemo{
publicstaticvoidmain(String[]args){
Clerk2c=newClerk2();
Threadt=newThread(newProducer2(c));
..
分类:
编程语言 时间:
2014-09-01 02:48:53
阅读次数:
256
import java.util.concurrent.locks.Lock;import java.util.concurrent.locks.ReentrantLock;public class sequence { private static final long ONE_STEP =...
分类:
数据库 时间:
2014-08-30 11:04:09
阅读次数:
359
Java在一开始就提供了synchronized关键字,用于多线程之间的同步。它使用简便,不会出现拿锁之后不归还的情况,可以避免一些编程错误。而jdk5时提供的concurrent包里,有一个Lock接口以及它的实现类:ReentrantLock。这个类提供了更灵活的控制以及更强大的功能。如果单从性...
分类:
其他好文 时间:
2014-08-29 18:11:38
阅读次数:
251
ConcurrentHashMap的整个结构是一个Segment数组,每个数组由单独的一个锁组成,Segment继承了ReentrantLock。然后每个Segment中的结构又是类似于HashTable,也就是又是一个数组,数组的元素类型是HashEntry,每个形成一个桶。要找每个元素的时候,首...
分类:
编程语言 时间:
2014-08-26 00:17:15
阅读次数:
489
JAVA读写锁
显示锁
在java5.0之前,在协调共享对象访问时可以使用的机制只有synchronized和volatile。java5.0增加了一种新的机制:ReentrantLock。ReentrantLock并不是一种替代内置锁的方法,而是当内置锁不适用时,作为一种可选择的高级功能。与内置锁不同的是Lock提供了一个无条件的、可轮询的、定时的以及可中断的锁获取操作,所有加锁和解锁都是显...
分类:
编程语言 时间:
2014-08-16 19:50:31
阅读次数:
399
1、高级同步机制 使用synchronized关键词的问题在于加锁范围是固定的,无法把锁在对象之间进行传递,使用起来不灵活,但是也不容易出错。 (1)tryLock (2)ReadWriteLock (3)ReentrantLock 2、底层同步器 3、...
分类:
编程语言 时间:
2014-08-05 09:44:59
阅读次数:
246
在编码的过程中,有时候我们不得不借助锁同步来保证线程安全。synchronized关键字在上一篇博客中已经介绍;自从JDK5开始,添加了另一种锁机制:ReentrantLock。
二者的区别
1、lock是jdk5之后代码层面实现的,synchronized是JVM层面实现的。
2、synchronized在出现异常的时候能够自动释放锁,而lock必须在finally块中unlock()主动...
分类:
编程语言 时间:
2014-08-01 00:02:20
阅读次数:
319
JDK并发工具包中,很多异常处理都使用了如下的结构,如AbstractExecutorService,即只有try和finally没有catch。
class X
{
private final ReentrantLock lock = new ReentrantLock();
// ...
public void m()
{
lock.lock(); ...
分类:
编程语言 时间:
2014-07-27 11:55:33
阅读次数:
275
import java.util.LinkedList;import java.util.Queue;import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;import java.util....
分类:
其他好文 时间:
2014-07-27 09:45:42
阅读次数:
274