// 使用 synchronized 关键字的示例代码
class Counter {
private int count = 0;
// synchronized 方法,确保同一时间只有一个线程可以访问此方法
public synchronized void increment() {
count++;
}
// 获取当前计数值
public int getCount() {
return count;
}
}
public class SynchronizedExample {
public static void main(String[] args) throws InterruptedException {
final Counter counter = new Counter();
// 创建多个线程同时对 counter 进行操作
Thread t1 = new Thread(() -> {
for (int i = 0; i < 1000; i++) {
counter.increment();
}
});
Thread t2 = new Thread(() -> {
for (int i = 0; i < 1000; i++) {
counter.increment();
}
});
t1.start();
t2.start();
t1.join();
t2.join();
// 输出最终的计数值
System.out.println("Final count is: " + counter.getCount());
}
}
synchronized 关键字用于确保同一时间只有一个线程可以执行被标记为 synchronized 的方法或代码块。increment() 方法被标记为 synchronized,因此当一个线程调用 increment() 时,其他线程必须等待,直到该线程完成对该方法的调用。count 变量)时可能出现的竞争条件(race condition),从而保证数据的一致性和正确性。上一篇:java调用方法
下一篇:java .class
Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3
Laravel 中文站