// Java线程同步示例代码
class Counter {
private int count = 0;
// synchronized关键字确保同一时间只有一个线程可以访问此方法
public synchronized void increment() {
count++;
}
public int getCount() {
return count;
}
}
public class ThreadSyncExample {
public static void main(String[] args) throws InterruptedException {
Counter counter = new Counter();
// 创建两个线程,同时对Counter对象进行操作
Thread thread1 = new Thread(() -> {
for (int i = 0; i < 1000; i++) {
counter.increment();
}
});
Thread thread2 = new Thread(() -> {
for (int i = 0; i < 1000; i++) {
counter.increment();
}
});
// 启动线程
thread1.start();
thread2.start();
// 等待两个线程执行完毕
thread1.join();
thread2.join();
// 输出最终的计数值
System.out.println("Final count: " + counter.getCount());
}
}
Counter类:包含一个count
变量和一个synchronized
的increment
方法。synchronized
关键字确保同一时间只有一个线程可以访问此方法,从而避免了多个线程同时修改count
导致的数据不一致问题。
ThreadSyncExample类:创建两个线程,每个线程都调用Counter
对象的increment
方法1000次。通过使用synchronized
关键字,保证了线程安全,最终输出的计数值应该是2000。
线程启动与等待:使用start()
方法启动线程,并使用join()
方法等待线程执行完毕,以确保主线程在所有子线程完成后才继续执行并输出结果。
上一篇:java获取近七天日期
下一篇:java 获取当前日期0点
Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3
Laravel 中文站