java synchronized示例
时间: 2024-03-30 09:32:10 浏览: 61
以下是一个Java中使用synchronized关键字的示例[^2]:
```java
public class SynchronizedExample {
private int num = 0;
public synchronized void add() {
for (int i = 0; i < 10; i++) {
num++;
System.out.println("当前线程: " + Thread.currentThread().getName() + ", num = " + num);
try {
TimeUnit.SECONDS.sleep(1);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
public static void main(String[] args) {
SynchronizedExample example = new SynchronizedExample();
// 创建两个线程并启动
Thread thread1 = new Thread(() -> {
example.add();
});
Thread thread2 = new Thread(() -> {
example.add();
});
thread1.start();
thread2.start();
}
}
```
在上述示例中,我们创建了一个名为`SynchronizedExample`的类,其中包含了一个使用了`synchronized`关键字修饰的`add()`方法。这个方法会对一个共享变量`num`进行自增操作,并输出当前线程的名称和`num`的值。由于`synchronized`关键字的存在,每次只能有一个线程获取到锁,保证了对`num`的操作是原子的,避免了多个线程同时修改`num`导致的错误结果。
在`main()`方法中,我们创建了两个线程并启动,它们都会调用`SynchronizedExample`对象的`add()`方法。由于`synchronized`关键字的作用,每次只有一个线程能够获取到锁并执行`add()`方法,保证了线程安全。
阅读全文