1. synchronized 是jvm 层次的(可以会造成死锁), lock 可以写代码控制,一般在异常时在 finally 里可以 unlock 释放锁
2. lock 细度更细,synchronized 一个线程锁住了,其他线程无法进入。而 lock 里的 ReadWriteLock 可以获得 读锁 和写锁。可以允许多个写锁进入,
3. lock 可以用 trylock 试着获得 锁 ,如果获得返回true,接着执行,否则可以去执行其他事情,而 synchronized 则一直等待,同时tryLock 还可以设置
在某个时间段内获得锁
if(lock.tryLock()){
// 获得锁 ,继续执行
} else {
// 没获得锁 ,干其他事情
}
4. lock 可以new 一个 condition ,condition 相当于 wait 和 notify 的作用
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步