在Java中,要使类方法同步,可以使用synchronized
关键字。同步方法可以确保在同一时刻只有一个线程能够访问该方法,从而防止多线程环境下的数据不一致问题。
以下是一个简单的示例,展示了如何将类方法同步:
public class SynchronizedExample { private int counter = 0; // 同步方法 public synchronized void increment() { counter++; } // 同步代码块 public void decrement() { synchronized (this) { counter--; } } public static void main(String[] args) { SynchronizedExample example = new SynchronizedExample(); // 创建两个线程,一个用于递增计数器,另一个用于递减计数器 Thread incrementThread = new Thread(() -> { for (int i = 0; i < 1000; i++) { example.increment(); } }); Thread decrementThread = new Thread(() -> { for (int i = 0; i < 1000; i++) { example.decrement(); } }); // 启动线程 incrementThread.start(); decrementThread.start(); // 等待线程执行完成 try { incrementThread.join(); decrementThread.join(); } catch (InterruptedException e) { e.printStackTrace(); } // 输出结果 System.out.println("Counter: " + example.counter); } }
在这个示例中,我们有两个方法:increment()
和decrement()
。通过在方法声明前添加synchronized
关键字,我们将其声明为同步方法。这意味着在同一时刻只有一个线程能够访问这些方法。
另外,我们还可以使用同步代码块来实现同步。在decrement()
方法中,我们使用synchronized (this)
来同步代码块,其中this
表示当前对象实例。这样,在同一时刻也只有一个线程能够执行这个同步代码块内的代码。