解析ReentrantLock实现原理

  在Java中通常实现锁有两种方式,一种是synchronized关键字,另一种是Lock。首先最大的不同:synchronized是基于JVM层面实现的,而Lock是基于JDK层面实现的。

对于使用者的直观体验上Lock是比较复杂的,需要lock和realse,如果忘记释放锁就会产生死锁的问题,所以,通常需要在finally中进行锁的释放。但是synchronized的使用十分简单,只需要对自己的方法或者关注的同步对象或类使用synchronized关键字即可。但是对于锁的粒度控制比较粗,同时对于实现一些锁的状态的转移比较困难。例如:

特点:

tips synchronized Lock
锁获取超时 不支持 支持
获取锁响应中断 不支持 支持

猜你喜欢

转载自www.cnblogs.com/jing99/p/10618675.html