浅谈Lock和Synchronized
《一》两则区别(笼统的说一下先):
1.lock是一个接口,synchronized是Java的关键字,synchronized是内置Java语言的实现。
2.synchronized是发生异常时,会自动地释放线程占有的锁,因此不会导致死锁的现象发生;而lock在发生异常时,如果没有主动通过unlock()去释放锁,则很可能造成死锁现象,因此使用lock时需要在finally中释放锁。
3.lock可以让等待锁的线程响应中断,而synchronized却不行,使用synhronized时,等待的线程会一直等待下去,不能够响应中断。
4.通过lock可以知道有没有成功获取锁,而synchronized无法办到。
5.lock可以提高多个线程进行读操作的效率。