在Java中,synchronized关键字用于控制多线程对共享资源的访问,以实现线程同步。synchronized方法是一种特殊的synchronized块,它锁定的是当前对象实例(this)。当一个线程访问synchronized方法时,其他线程将无法访问该对象的任何synchronized方法或synchronized块,直到第一个线程释放锁。
要实现synchronized方法,只需在方法声明前加上synchronized关键字即可。以下是一个简单的示例:
public class SynchronizedExample {
// 定义一个共享资源
private int counter = 0;
// 定义一个synchronized方法
public synchronized void increment() {
// 临界区:访问共享资源
counter++;
}
public synchronized void decrement() {
// 临界区:访问共享资源
counter--;
}
public synchronized int getCounter() {
// 返回共享资源的值
return counter;
}
}
在这个示例中,我们定义了一个名为SynchronizedExample的类,其中有一个共享资源counter和一个synchronized方法increment()、decrement()和getCounter()。当一个线程调用increment()方法时,它将锁定当前对象实例,其他线程将无法访问该对象的任何synchronized方法,直到第一个线程释放锁。这样可以确保在多线程环境下对counter变量的访问是线程安全的。