java 方法枷锁synchronized
时间: 2023-08-30 17:08:10 浏览: 114
Java中synchronized正确使用方法解析
5星 · 资源好评率100%
在Java中,可以使用关键字`synchronized`来对方法进行加锁,以实现线程安全。当一个线程进入被`synchronized`修饰的方法时,它会自动获取该方法所属对象的锁。其他线程如果想要执行相同的方法,则需要等待该线程释放锁。
以下是一个示例代码:
```java
public class MyClass {
private int count;
public synchronized void increment() {
count++;
}
}
```
在上述示例中,`increment`方法被`synchronized`修饰,意味着一次只能有一个线程可以执行该方法。当一个线程正在执行`increment`方法时,其他线程需要等待。
除了对整个方法加锁,还可以对代码块进行加锁。例如:
```java
public class MyClass {
private int count;
private Object lock = new Object();
public void increment() {
synchronized (lock) {
count++;
}
}
}
```
在上述示例中,使用了一个对象`lock`作为锁。当线程进入`synchronized`代码块时,它会获取`lock`对象的锁。
请注意,`synchronized`关键字只能用于实例方法和静态方法,不能用于构造函数或普通代码块。此外,当多个线程竞争同一个锁时,可能会导致死锁或性能问题,因此需要谨慎使用。
阅读全文