并发编程中------------------------锁机制
一、synchronized同步关键字的缺陷
一个代码块被synchronized修饰了,当一个线程获取了对应的锁,并执行该代码块,其他线程就一直在等待,等待获取锁的线程释放。而且获取锁的线程释放锁只有两种情况
1、获取锁的线程执行完了该代码块,然后释放对锁的占有
2、锁线程执行发生异常,此时JVM会让线程自动释放该锁
但是如果获取锁的这个线程由于要等待IO获取其他的原因(比如sleep)线程被阻塞了,锁没有被释放,其他线程就只能眼巴巴的一直等待,影响系统的执行
3、lock可以判断是否获取到锁而且lock需要手动去释放锁
2.ReentrantLock
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步