首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

最简略高效的tryLock

2012-09-16 
最简单高效的tryLockJava代码 1.import java.util.concurrent.atomic.AtomicBoolean2.3./**4. * @author

最简单高效的tryLock
Java代码
1.import java.util.concurrent.atomic.AtomicBoolean;  
2. 
3./** 
4. * @author asme2u 
5. */ 
6.public class Lock {  
7. 
8.    private AtomicBoolean lock = new AtomicBoolean(true);  
9. 
10.    public boolean tryLock() {  
11.        return lock.compareAndSet(true, false);  
12.    }  
13. 
14.    public void unlock() {  
15.        lock.set(true);  
16.    }  
17. 
18.} 

原理:CAS

优点:
     速度快,约是ReentrantLock的2-3倍

缺点:
     需JDK5.0+
     无条件对象且不可重入
     未获取锁时直接调用unlock不抛IllegalMonitorStateException所以代码必须严格保证获取锁后才能调用unlock

适用场景:
    不需要条件对象且当ReentrantLock的tryLock影响了你的性能的时候

我的应用场景:
    最近项目中通信程序中的客户端的socket长连接的连接池,客户端使用连接具有高并发但占用连接时间非常短的特点,使用这个类代替ReentrantLock,性能提高了3倍左右

热点排行