synchronized 同一个对象中的多个方法
时间: 2024-06-02 09:02:55 浏览: 64
java多线程编程之使用Synchronized块同步方法
在Java中,synchronized关键字可以用于同步方法或同步代码块,它可以保证同一时刻只有一个线程可以访问被同步的代码块或方法。如果同步方法和同步代码块都在同一个对象中,那么它们都将锁定这个对象,只有一个线程可以访问这个对象的同步方法和同步代码块,其他线程则必须等待锁释放后才能访问。
例如:
```
public class MyClass {
public synchronized void method1() {
// 这里的同步锁是MyClass对象
// do something
}
public void method2() {
synchronized(this) {
// 这里的同步锁也是MyClass对象
// do something
}
}
}
```
在上面的例子中,method1()和method2()都使用了synchronized关键字来保证同步,它们都锁定了MyClass对象。因此,在同一个线程中,如果一个线程正在执行method1()方法,那么其他线程就必须等待method1()方法执行完毕并释放锁后才能访问MyClass对象的其他同步方法和同步代码块。同样的,如果一个线程正在执行method2()方法中的同步代码块,其他线程也必须等待该线程释放锁后才能访问MyClass对象的其他同步方法和同步代码块。
阅读全文