类别 | Synchronized | Lock |
---|---|---|
存在层次 | java的关键字,在jvm层面上 | 是一个接口 |
锁的释放 | synchronized在线程发生异常时,会自动释放锁,因此不会出现死锁 | lock在发生异常时,必须手动释放锁如(在 finally语句中释放锁),否则容易造成线程死锁 |
锁的获取 | 假设A线程获得锁,B线程等待。如果A线程阻塞,B线程会一直等待 | 分情况而定,Lock有多个锁获取的方式,具体下面会说道,大致就是可以尝试获得锁,线程可以不用一直等待 |
锁状态 | 无法判断 | 可以判断 |
锁类型 | 可重入 不可中断 非公平 | 可重入 可判断 可公平(两者皆可) |
性能 | 少量同步 | 大量同步 |
Synchronized与Lock的区别(表)
最新推荐文章于 2024-07-24 21:47:59 发布