并发编程

Java温故而知新之Lock与Synchronized

2017-02-23  本文已影响14人  卖梦想的男孩

两者比较:

特性 Synchronized Lock
内置、关键字
需手动释放锁 不必 必须
重入性 支持 支持
中断锁 不支持 支持
公平锁 不支持 支持
读写锁 不支持 支持

相关概念解析

lock的简单使用

public interface Lock {
    void lock();//获取锁
    void lockInterruptibly() throws InterruptedException;//获取中断锁
    boolean tryLock();//尝试获取锁
    boolean tryLock(long time, TimeUnit unit) throws InterruptedException;
    void unlock();//释放锁
    Condition newCondition();//新建一个锁环境
}
Lock lock = ...;//定义锁
lock.lock();//获取锁
try{
    //处理任务
}catch(Exception ex){
  //捕获异常
}finally{
    lock.unlock();   //释放锁
}
public void method() throws InterruptedException {
    lock.lockInterruptibly();
    try {  
     //.....
    }
    finally {
        lock.unlock();
    }  
}
Lock lock = ...;
if(lock.tryLock()) {
     try{
         //处理任务
     }catch(Exception ex){
     }finally{
         lock.unlock();   //释放锁
     } 
}else {
    //如果不能获取锁,则直接做其他事情
}
上一篇下一篇

猜你喜欢

热点阅读