gpt4 book ai didi

java - 多线程环境下ConcurrentHashMap方法执行顺序

转载 作者:太空宇宙 更新时间:2023-11-04 10:27:06 24 4
gpt4 key购买 nike

根据以下 JLS 规则 -线程中的每个操作都发生在该线程中按程序顺序稍后出现的每个操作之前。

在下面的情况下,clear() 总是在放入多线程环境之前执行

private ConcurrentMap<Feature, Boolean> featureMap = new ConcurrentHashMap<>();

public void loadAllConfiguration() {
featureMap.clear();
featureMap.put()
}

最佳答案

In the below case, would clear() always execute before put in a multithreaded environment

是的,在多线程应用程序中,每个线程中 clear() 都在 put() 之前。然而,当您查看多个线程的交互时,就共享ConcurrentHashMap而言,情况不再如此。

例如,由于竞争条件,您可能会看到以下事件序列:

  1. 线程 1 调用clear()。
  2. 线程 2 调用clear()。
  3. 线程 3 调用clear()。
  4. 线程 2 调用 put()。
  5. 线程 1 调用 put()。
  6. 线程 3 调用 put()。

即使每个线程先清除然后放入,也不能保证 ConcurrentHashMap 中只有 1 个项目(如果这是您的问题的重点)。

关于java - 多线程环境下ConcurrentHashMap方法执行顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50409974/

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