可重入是多线程并发编程里一个比较重要的概念。简单来说,就是在运行的某个方法或代码片段,因为抢占资源或者中断等原因,导致方法或者代码片段的运行中断,等待中断程序执行结束后,重新进入这个方法或者代码片段中运行,并且运行结果不会受到影响,那么这个方法或者代码片段就是可重入的。
而可重入锁,简单来说就是一个线程如果抢占到了互斥锁资源,在锁释放之前再去竞争同一把锁的时候,不需要等待,只需要记录重入次数。
下面的代码演示了 synchronized 同步锁的重入特性:
public static synchronized void lock1(){
//Thread X获得了lock1()中的synchronized 锁
//再次调用加同步锁的1ock2()方法lock2();
lock2;
}
public static synchronized void lock2(){
//TDD
}