java synchronized修饰非静态方法的作用,举例说明
时间: 2023-07-20 21:24:38 浏览: 84
当Java中的实例方法被synchronized修饰时,该方法成为线程安全的,同一时刻只能有一个线程访问该方法,其他线程需要等待当前线程执行完该方法后才能进入该方法。这种方式可以保证多线程环境下实例变量的线程安全性。
下面是一个使用synchronized修饰非静态方法的示例:
```
public class Example {
private int count = 0;
public synchronized void increment() {
count++;
}
public synchronized void decrement() {
count--;
}
public synchronized int getCount() {
return count;
}
}
```
在这个示例中,increment()、decrement()和getCount()方法都被synchronized修饰,因此同一时刻只有一个线程能够访问这些方法,保证了对count变量的同步控制,避免了多线程并发访问时的数据竞争问题。
需要注意的是,synchronized修饰的实例方法是基于实例对象的锁,不同的实例对象之间互相独立,不会互相影响。
阅读全文