浅谈synchronized和Lock的区别

最近在面试中碰到了面试官问synchronized和Lock的区别,回答的有些模糊,回来之后查询资料做了简单的总结。

引用csdn博客(作者“brickworkers的博客”)中的一个表格:

类别synchronizedLock
存在层次 Java的关键字,在jvm层面上 是一个类
锁的释放 1、以获取锁的线程执行完同步代码,释放锁 2、线程执行发生异常,jvm会让线程释放锁 在finally中必须释放锁,不然容易造成线程死锁
锁的获取 假设A线程获得锁,B线程等待。如果A线程阻塞,B线程会一直等待 分情况而定,Lock有多个锁获取的方式,大致就是可以尝试获得锁,线程可以不用一直等待
锁状态 无法判断 可以判断
锁类型 可重入 不可中断 非公平 可重入 可判断 可公平(两者皆可)
性能 少量同步 大量同步

未完待续......

原文地址:https://www.cnblogs.com/huangzhang/p/9213648.html