Synchronized与Lock的对比
- Lock是显示锁(手动开启和关闭锁,别忘记关闭锁) synchronized是隐式锁,出了作用域自动释放
- Lock只有代码块锁,synchronized锁有代码锁和方法锁
- 使用Lock锁,jvm将花费更少的时间来调度线程,性能更好。并且具有更好的扩展性(有很多的子类)
- Synchronized 内置java关键字,Lock是一个java接口
- Synchronized 可重入锁,不可以中断,非公平锁;Lock,可重入锁,默认非公平锁(可以设置)
- Synchronized 如果线程1获得锁,并且阻塞,线程2就会傻傻的等待;Lock锁就不一定会等待下去