Java.util.concurrent.lock 中的Lock 框架是锁定的一个抽象。 ReentrantLock ReentrantLock 类实现了Lock ,它拥有与synchronized 相同的并发性和内存语义,但是添加了类似锁投票、定时锁等候和可中断锁等候的一些特性,ReentrantLock并不是一种替代加锁的方法,而是当内置加锁机制不适用时,作为一种可选的高级功能。
class Outputter1 {
private Lock lock = new ReentrantLock();// 锁对象
public void output(String name) {
lock.lock(); // 得到锁
try {
for(int i = 0; i < name.length(); i++) {
System.out.print(name.charAt(i));
}
} finally {
lock.unlock();// 释放锁
}
}
}
读写锁ReadWriteLock ReentranLock实现了一种标准的互斥锁:每次最多只有一个线程能持有ReentranLock。但对于维护数据的完整性来说,互斥通常是一种过于强硬de加锁规则,一次也就不必要的限制了并发性。互斥是一种保守的加锁策略,虽然可以避免“写写”冲突和“写读”冲突,但同样也避免了“读读”冲突。在许多情况下,数据结构上的操作都是“读”操作。此时,如果能够放宽加锁需求,允许多个执行读操作的线程同时访问数据结构,那么将提升程序的性能。读锁有什么用?
pubic interface ReadWriteLock{
Lock readLock();
Lock writeLock();
}
本文介绍Java中Lock接口及ReentrantLock类的使用,包括锁的基本操作、并发性和内存语义等,并探讨了读写锁的概念及其如何提高并发性能。
312

被折叠的 条评论
为什么被折叠?



