您好,登录后才能下订单哦!
密码登录
登录注册
点击 登录注册 即表示同意《亿速云用户服务条款》
Java Atomic 类库提供了一组原子变量类,如 AtomicInteger、AtomicLong、AtomicReference 等
import java.util.concurrent.atomic.AtomicInteger;
AtomicInteger atomicInteger = new AtomicInteger(0);
getAndIncrement()
: 原子地获取当前值并递增。getAndDecrement()
: 原子地获取当前值并递减。getAndAdd(int delta)
: 原子地获取当前值并加上指定的值。compareAndSet(int expect, int update)
: 如果当前值等于预期值,则原子地将其更新为给定的新值。public void increment() {
atomicInteger.incrementAndGet();
}
public void decrement() {
atomicInteger.decrementAndGet();
}
public void add(int value) {
atomicInteger.addAndGet(value);
}
public boolean compareAndSet(int oldValue, int newValue) {
return atomicInteger.compareAndSet(oldValue, newValue);
}
public static void main(String[] args) {
SharedResource sharedResource = new SharedResource();
// 启动多个线程同时更新共享资源
for (int i = 0; i < 1000; i++) {
new Thread(() -> {
sharedResource.increment();
sharedResource.decrement();
sharedResource.add(10);
sharedResource.compareAndSet(0, 100);
}).start();
}
// 等待所有线程执行完毕
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
// 输出最终结果
System.out.println("Final result: " + sharedResource.get());
}
通过使用 Java Atomic 类库,您可以实现无锁编程,从而提高程序的性能和可扩展性。请注意,无锁编程并不总是最佳解决方案,因为它可能导致复杂的实现和潜在的数据不一致问题。在选择无锁编程时,请确保您了解其优缺点。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。