锁与同步的区别

同步是synchronized关键字也就是内部锁,可以在方法上或代码块上,构成同步方法和同步块,可以保证资源保证的排他性。
lock显式锁,是通过代码实现的,它比synchronized有更精确的线程语义,提供了超时获取锁,定时锁,等候和中断锁等功能,避免死锁。在竞争不是很激烈的情况下,synchronized性能优于Lock,竞争激烈的情况下synchronized的性能会下降的很快,而Lock则不会改变

==============================================================
1.Lock是一个接口,而synchronized是关键字
2.synchronized是内置语言的实现,synchronized是在虚拟机层面上实现的,不但可以通过一些监控工具监控synchronized的锁定,而且,在代码执行时出现异常JVM会自动释放锁定。但是Lock不行,Lock是通过代码实现的,要保证锁一定被释放,就必须将Unlock()放在finally{}中。
3.Lock可以让等待的线程响应中断,线程可以去做别的事情;synchronized不行,等待的线程会一直等下去,不能够响应中断。
4.Lock知道是否获得锁,知道锁的状态,而Synchronized却无法办到。
5Lock可以提高多个线程进行操作的效率。

锁与同步的区别_第1张图片

你可能感兴趣的:(java)