-
Lock和synchronized比较
- Lock必须手动释放锁
- lock可以尝试获取锁
- lock可以中断获取锁的线程
- lock可以设置超时获取锁
- Lock是接口,synchronized是java中的关键字
- synchronized简单、可读性好
http://www.iocoder.cn/JUC/sike/synchronized/
synchronized:是java中的关键字。
修饰代码块:被修饰的代码为同步代码块,作用对象是调用这个代码块的对象。
修饰方法:同步方法,作用对象是调用这个代码块的对象。
修饰静态方法:作用对象是这个类的所有对象。
修饰类:作用对象是这个类的所有对象。
-
可重入锁
可重入锁就是线程可以进入任何一个它已经拥有的锁所同步着的代码块
-
公平锁和非公平锁
公平锁是指锁的分配是公平的,通常是首先提出获取锁的线程优先分配到锁,反之就是非公平锁。
一般情况下非公平锁的效率更高,因为如果多个线程竞争同一个锁,公平锁需要排队,而非公平锁有可能刚来就获取到了锁,不需要经历线程的挂起、唤醒等步骤。