请给出一个Java synchronized例子
时间: 2023-08-19 08:50:45 浏览: 94
当多个线程同时访问共享资源时,为了避免数据竞争和不一致的结果,可以使用Java中的synchronized关键字来实现线程同步。下面是一个简单的Java synchronized示例:
```java
public class SynchronizedExample {
private int count = 0;
public synchronized void increment() {
count++;
}
public static void main(String[] args) throws InterruptedException {
SynchronizedExample example = new SynchronizedExample();
// 创建多个线程
Thread thread1 = new Thread(() -> {
for (int i = 0; i < 1000; i++) {
example.increment();
}
});
Thread thread2 = new Thread(() -> {
for (int i = 0; i < 1000; i++) {
example.increment();
}
});
// 启动线程
thread1.start();
thread2.start();
// 等待线程执行完毕
thread1.join();
thread2.join();
// 输出结果
System.out.println("Count: " + example.count);
}
}
```
在上面的示例中,我们创建了一个SynchronizedExample类,其中包含一个共享变量count和一个使用synchronized修饰的increment()方法。两个线程分别调用increment()方法来对count进行累加操作。由于increment()方法被synchronized修饰,同一时刻只能有一个线程访问该方法,确保了count的操作是原子性的,避免了数据竞争。最后输出结果为2000,表示两个线程对count进行了正确的累加操作。
阅读全文