1.synchronized 是 Java 的一个内置特性关键字,而 Lock 是 Java 的一个接口类; 2.synchronized 在发生异常时会自动释放线程占用的锁,而 Lock 在发生异常时(不发生也一样)需要主动在 finally 中调用 unLock() 去释放锁; 3.Lock 可以让等待锁的线程响应中断,而 synchronized 无法响应中断,会一直等待下去; 4.Lo...
Synchronized与Lock的区别和优缺点 1. synchronized 是 Java 的⼀个内置特性关键字,⽽ Lock 是 Java 的⼀个接⼝类;2. synchronized 在发⽣异常时会⾃动释放线程占⽤的锁,⽽ Lock 在发⽣异常时(不发⽣也⼀样)需要主动在 finally 中调⽤ unLock() 去释放锁;3. Lock 可以让等待...
4.Lock 可以知道有没有成功获取到锁,而 synchronized 无法办到; 5.Lock 可以提高多线程进行读操作的效率,而 synchronized 不可以; 6.在性能上来说如果竞争资源不激烈则两者差距不大,如果竞争资源非常激烈(很多线程同时抢占)时Lock 的性能远远好于 synchronized; 7.不过要注意Lock 只能中断阻塞中的线程,一旦获取到...