写一个 java 无锁并发代码
时间: 2024-04-12 19:26:45 浏览: 10
下面是一个简单的Java无锁并发代码的示例,使用AtomicInteger实现了一个线程安全的计数器:
```java
import java.util.concurrent.atomic.AtomicInteger;
public class NoLockConcurrencyExample {
private static AtomicInteger counter = new AtomicInteger(0);
public static void main(String[] args) {
Thread t1 = new Thread(new IncrementTask());
Thread t2 = new Thread(new IncrementTask());
t1.start();
t2.start();
try {
t1.join();
t2.join();
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("Counter value: " + counter.get());
}
static class IncrementTask implements Runnable {
@Override
public void run() {
for (int i = 0; i < 10000; i++) {
counter.incrementAndGet();
}
}
}
}
```
在这个示例中,我们使用AtomicInteger类来实现计数器。AtomicInteger是一个线程安全的整数类,它提供了原子操作来保证多线程环境下的线程安全性。
在main方法中,我们创建了两个线程t1和t2,并启动它们。每个线程都会执行IncrementTask任务,该任务通过调用counter的incrementAndGet方法来递增计数器的值。
最后,我们等待两个线程执行完毕,并输出计数器的最终值。
使用Atomic类可以避免使用显式锁(如synchronized关键字),从而实现更高效的并发编程。