可重入锁也称递归锁。
可重入锁指的是同一个线程进入外层函数获得锁,内层同步函数仍然可以使用该锁,并且不会发生死锁。ReentrantLock和synchronized默认都是可重入锁。
class Phone implements Runnable{
//可重入锁 ReentrantLock
Lock lock = new ReentrantLock();
@Override
public void run() {
getLock();
}
public void getLock(){
lock.lock();
try{
System.out.println(Thread.currentThread().getName()+"\t invoke get()");
setLock();
}finally {
lock.unlock();
}
}
public void setLock(){
lock.lock();
try {
System.out.println(Thread.currentThread().getName()+"\t invoke set()");
}finally {
lock.unlock();
}
}
}
public class ReentrantLockDemo {
public static void main(String[] args) {
Phone p = new Phone();
Thread t1 = new Thread(p,"t1");
t1.start();
//Thread t2 = new Thread(p);
}
}