比synchronized更好用的锁(Lock)

synchronized的使用方法:

public synchronized void test(){}

Lock的使用方法:

Lock lock = new ReentrantLock();
public void test(){
lock.lock();
System.out.println(Thread.currentThread().getName()+"加锁");
try {
  //业务块
} catch (Exception e) {
 
}finally {
System.out.println(Thread.currentThread().getName()+"释放了锁");
lock.unlock();
}

Lock和synchronized有一点非常大的不同,采用synchronized不需要用户去手动释放锁,当synchronized方法或者synchronized代码块执行完之后,系统会自动让线程释放对锁的占用;而Lock则必须要用户去手动释放锁,如果没有主动释放锁,就有可能导致出现死锁现象。

正在加载评论...