1.synchronized关键字的缺陷
a.同步的代码块被锁后,B线程等待获取锁,则B线程无法中断,即使不想让B线程处于等待状态也没办法,无法通过轮询得到锁;
b.同步还要求锁的释放只能在与获得锁所在的堆栈帧相同的堆栈帧中进行,带来了一些局限性;
2.ReentrantLock
类
a.ReentrantLock实现了
,添加了类似轮询锁、定时锁等候和可中断锁等候的一些特性;java.util.concurrent.lock
b.在多个线程同时竞争条件时,Reentrantlock可以花更少的时间去调用线程;
c.使用同步,JVM 将确保锁会获得自动释放;使用锁至关重要的一点就是,如果锁得不到释放,就像一颗定时炸弹;