并发编程中------------------------锁机制
一、synchronized同步关键字的缺陷
一个代码块被synchronized修饰了,当一个线程获取了对应的锁,并执行该代码块,其他线程就一直在等待,等待获取锁的线程释放。而且获取锁的线程释放锁只有两种情况
1、获取锁的线程执行完了该代码块,然后释放对锁的占有
2、锁线程执行发生异常,此时JVM会让线程自动释放该锁
但是如果获取锁的这个线程由于要等待IO获取其他的原因(比如sleep)线程被阻塞了,锁没有被释放,其他线程就只能眼巴巴的一直等待,影响系统的执行
3、lock可以判断是否获取到锁而且lock需要手动去释放锁
2.ReentrantLock