请展示一个Java多线程的例子,以及同步工具的使用。
以下是一个简单的Java多线程例子,其中使用了synchronized关键字来保证数据的安全。
// 创建两个共享变量
public class Counter {
private int count = 0;
// 定义一个公共方法,允许其他线程访问和修改count
public synchronized void increment() {
count++;
}
// 获取当前的计数
public synchronized int getCount() {
return count;
}
}
// 创建两个线程,分别增加计数器的值
public class MultiThreadExample {
public static void main(String[] args) {
Counter counter = new Counter();
// 创建并启动第一个线程
Thread thread1 = new Thread(() -> {
for (int i = 0; i < 10; i++) {
counter.increment();
try {
// 模拟耗时操作
Thread.sleep(50);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}));
// 创建并启动第二个线程
Thread thread2 = new Thread(() -> {
for (int i = 0; i < 10; i++) {
counter.increment();
try {
// 模拟耗时操作
Thread.sleep(50);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}));
// 启动两个线程
thread1.start();
thread2.start();
// 线程执行完毕后,打印出计数器的值
try {
thread1.join();
thread2.join();
System.out.println("Counter value: " + counter.getCount());
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
在这个例子中,我们创建了一个Counter
类,它有两个共享变量:count
和incrementCount
方法。然后我们创建了两个线程,分别调用这两个方法来增加计数器的值。
由于increment
方法被synchronized
修饰,所以多个线程可以同时访问这个方法,但不会导致数据的不一致。
还没有评论,来说两句吧...