gpt4 book ai didi

java - 两个线程并发修改HashMap

转载 作者:太空宇宙 更新时间:2023-11-04 15:05:02 25 4
gpt4 key购买 nike

如果两个线程尝试将(键,值)放入线程构造函数中传递的同一个映射中。我可能会遇到什么样的线程问题?

public class App {
public static void main(String[] args) throws JMSException {
Map<String, String> map = new HashMap<String, String>();
map.put("5", "fnc");

Thread t1 = new App().new T(map);
Thread t2 = new App().new T(map);
t1.start();
t2.start();
}

class T extends Thread {

private Map<String, String> map;

public T(Map<String, String> map) {
this.map = map;
}

public void run() {
// put 100s of keys in map here
map.put("1", "abc");
// put other keys
}
}
}

最佳答案

一个示例:当线程 1 正在输入值时,线程 2 决定增加哈希表容量。在这种情况下,线程 1 可能会将其值放入旧的哈希表中,而线程 2 可能会用新的哈希表覆盖该哈希表。线程 1 put 丢失。

关于java - 两个线程并发修改HashMap,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22109978/

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