面试题:Synchronized和Lock区别(大疆面试题、网易笔试题)
一、Synchronized和Lock区别
二、Lock源码
public interface Lock {
//获取锁,如果锁被暂用则一直等待
void lock();
//用该锁的获得方式,如果线程在获取锁的阶段进入了等待,那么可以中断此线程,先去做别的事
void lockInterruptibly() throws InterruptedException;
//注意返回类型是boolean,如果获取锁的时候锁被占用就返回false,否则返回true
boolean tryLock();
//比起tryLock()就是给了一个时间期限,保证等待参数时间
boolean tryLock(long time, TimeUnit unit) throws InterruptedException;
//释放锁
void unlock();
}
下面是Lock一般使用的例子,注意ReentrantLock是Lock接口的实现:
import java.util.concurrent