浅谈Lock和Synchronized

《一》两则区别(笼统的说一下先):

       1.lock是一个接口,synchronized是Java的关键字,synchronized是内置Java语言的实现。

       2.synchronized是发生异常时,会自动地释放线程占有的锁,因此不会导致死锁的现象发生;而lock在发生异常时,如果没有主动通过unlock()去释放锁,则很可能造成死锁现象,因此使用lock时需要在finally中释放锁。

       3.lock可以让等待锁的线程响应中断,而synchronized却不行,使用synhronized时,等待的线程会一直等待下去,不能够响应中断。

      4.通过lock可以知道有没有成功获取锁,而synchronized无法办到。

      5.lock可以提高多个线程进行读操作的效率。

原文地址:https://www.cnblogs.com/youdiaodaxue16/p/11432573.html