在并发环境中是否可以正常工作(没有竞争条件)?
这是一种“密钥自动递增”功能实现。.
private final AtomicInteger atomic = new AtomicInteger(0);
private Map<Long, Integer> hashmap = new ConcurrentHashMap<>();
void put(String value) {
hashmap.put(atomic.getAndIncrement(), Integer.valueOf(value));
}
我想不是,因为Integer.valueOf
没有同步。
谢谢!
答案 0 :(得分:1)
这里没有同步
Integer.valueOf(value)
value
参数是String
,这表示它已被复制(不是真的,但认为确实如此)。
A {{1 }}也是不可变的。
String
是一个不包含状态的纯函数。因此,根据定义,它是线程安全的。
看看这个小片段,您的代码看起来不错。