synchronized 与 Lock的区别
- Lock是显式锁(手动开启和关闭锁)
- synchronized是隐式锁,除了作用域自动释放
- Lock只有代码块锁,synchronized有代码块锁和方法锁
- 使用Lock锁,JVM将花费较少的时间来调度线程,性能更好,并且具有更多的扩展性(提供更多子类)
- 优先使用顺序
- Lock > 同步代码块 >同步方法
Lock锁的使用方
ReentrantLock lock=new ReentrantLock();
lock.lock(); //加锁
lock.lock.unlock();//解锁