生产者消费者模式的经典实现,java代码,采用内置锁,使用关键字synchronized实现。
分类:
编程语言 时间:
2014-11-03 19:13:57
阅读次数:
240
可重入锁指的是如果一个线程已经获得了一个锁,那么它可以多次进入这个锁,当然前提是线程需要先获得这个锁。
可重入锁是最常使用的锁,Java的内置锁就是可重入锁,使用synchronized关键字可以启用内置锁机制,比如说一个类有两个synchronized方法A和B,在A方法中调用了B方法,如果锁不是可重入的,那么访问B时需要再次竞争锁,这样会带来死锁。
public synch...
分类:
其他好文 时间:
2014-11-03 14:37:42
阅读次数:
190
锁:内置锁 (监视器锁): 每个java对象都可以做一个实现同步的锁,这些锁被成为内置锁. 获得锁的唯一途径就是进入有这个锁保护的代码块或方法重入锁: 由于内置锁是可重入的,因此如果某个线程试图获得一个以已经由他自己持有的锁, 那么这个请求就会成功.重入意味着获取锁的操作粒度是"线程",而不是"调用...
分类:
编程语言 时间:
2014-10-26 09:04:31
阅读次数:
206
Collections.synchronizedList 工厂方法
通常的Map,Set,List实现都不是线程安全的,通过这些工厂方法可以得到相应的同步容器,相当于增强了访问控制,把一个链表对象传递过来后,我们都通过返回的这个链表对象来进行各种操作(都是同步方法),而不再操纵底层的那个链表。此外,在Vector和同步封装器类中是用内置锁来来支持客户端加锁,所以我们可以进行扩展。
在对...
分类:
其他好文 时间:
2014-09-15 16:03:29
阅读次数:
164
JAVA读写锁
显示锁
在java5.0之前,在协调共享对象访问时可以使用的机制只有synchronized和volatile。java5.0增加了一种新的机制:ReentrantLock。ReentrantLock并不是一种替代内置锁的方法,而是当内置锁不适用时,作为一种可选择的高级功能。与内置锁不同的是Lock提供了一个无条件的、可轮询的、定时的以及可中断的锁获取操作,所有加锁和解锁都是显...
分类:
编程语言 时间:
2014-08-16 19:50:31
阅读次数:
399
JDK5.0之前,用java实现生产者和消费者的唯一方式就是使用synchronized内置锁和wait/notify条件通知机制。JDK5.0之后提供了显示锁Lock和条件队列Condition,与内置锁和内置条件队列相对应,但是显示的锁和条件队列,功能更强大,更灵活。此外JDK5.0之后还提供了大量很有用的并发工具类,如BlockingQueue等,基于这些数据结构,能够方便、快速、高效的构建...
分类:
其他好文 时间:
2014-08-07 23:11:55
阅读次数:
450
什么是可重入锁,不可重入锁呢?"重入"字面意思已经很明显了,就是可以重新进入。可重入锁,就是说一个线程在
获取某个锁后,还可以继续获取该锁,即允许一个线程多次获取同一个锁。比如synchronized内置锁就是可重入的
,如果A类有2个synchornized方法method1和method2,那么method1调用method2是允许的。显然重入锁给编程带
来了极大的方便。假如内置锁不是可...
分类:
其他好文 时间:
2014-07-31 09:53:26
阅读次数:
301
什么是可中断的锁获取呢?就是:线程在等待获取锁的过程中,是否能够响应中断,以便在被中断的时候能够解除阻
塞状态,而不是傻傻地一直在等待。java对象的内置锁(synchronized)就是一种不可中断的锁,也就是说如果一个线
程在等待获取某个对象的内置锁,就算是该线程被其他线程中断,该线程仍然继续等待内置锁,而不是解除阻塞状
态,也不会抛出InterruptedException。Lock类...
分类:
编程语言 时间:
2014-07-30 14:49:43
阅读次数:
254