gpt4 book ai didi

java - 长线程安全吗?

转载 作者:行者123 更新时间:2023-11-29 09:55:03 27 4
gpt4 key购买 nike

这个 Java 类是线程安全的吗?

class Counter() {

private Long counter = 0;

Long get() { return counter; }

Long inc() { return ++counter; }
}

如果不是,是否可以在不显式使用锁(或 synchronized 关键字)的情况下使其成为线程安全的?如果没有,那么我想以下是实现我的目标的最简单方法?

class Counter() {

private final AtomicLong counter = new AtomicLong(0);

Long get() { return counter.get(); }

Long inc() { return counter.incrementAndGet(); }
}

最佳答案

不,第一个例子不是线程安全的,因为 ++counter 不是原子的。例如,没有什么可以阻止两个线程同时执行 ++counter 并丢失其中一个增量。

第二个示例线程安全的,这意味着不会丢失任何增量。值得注意的是,get()inc() 返回的值在调用者收到它时很可能已过时。

关于java - 长线程安全吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15478374/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com