多线程001synchronized和lock有哪些区别

1.来源:

lock是一个接口(interface)。

synchronized是java的一个关键字,它由内置的语言实现。

2.异常是否释放锁:

lock发生异常时不会主动释放锁,必须手动unlock来释放,可能引起死锁。

synchronized发生异常时会自动释放锁,不会引起死锁。

3.是否响应中断:

lock等待锁的过程可以用interrupt来中断等待。

synchronized只能等待锁的释放,不能响应中断。

4.是否知道获取锁:

lock可以通过trylock来判断是否已经获取锁。

synchronized不能判断是否已经获取锁。

5.其他特点:

lock有读写锁,使用读锁可以提供高多个线程进行读操作的效率。

当资源的竞争很激烈时,lock的性能比synchronized要好。

synchronized使用Object对象提供的wait()、notify()、notifyAll()等方法进行线程的通信。

lock使用Condition对象await()、signal()等方法进行线程的通信。

原文地址:https://www.cnblogs.com/asenyang/p/15565390.html