synchronized 可重入锁
时间: 2023-09-10 15:10:52 浏览: 119
Synchronized与Lock
synchronized 是 Java 中的关键字,用于实现线程的同步,防止多个线程同时访问共享资源造成数据的不一致。可重入锁也是一种实现线程同步的机制,它允许同一个线程多次获得同一把锁。在 Java 中,synchronized 是一种可重入锁。
当一个线程多次执行 synchronized 代码块时,它会多次获得同一把锁,这就是 synchronized 可重入锁的特点。这种机制可以避免死锁的发生,因为同一个线程在多次获取锁时,不会将自己阻塞。
例如:
```
public synchronized void methodA() {
System.out.println("methodA start");
methodB();
System.out.println("methodA end");
}
public synchronized void methodB() {
System.out.println("methodB start");
// do something
System.out.println("methodB end");
}
```
在上面的代码中,当一个线程执行 methodA() 方法时,它会先获得 methodA() 方法所在的对象的锁,然后调用 methodB() 方法,此时它会再次获得同一把锁,然后执行 methodB() 方法中的代码。最后,它会释放锁并执行 methodA() 方法中剩余的代码。这个过程中,同一个线程多次获得同一把锁,但是不会发生死锁。
阅读全文