gpt4 book ai didi

java - Java中如何让多个线程操作一个数据对象

转载 作者:行者123 更新时间:2023-12-01 14:19:35 25 4
gpt4 key购买 nike

现在我有一个名为 Words 的 HashMap 和一个扩展 Thread 类的 Producer 类。

我有一个这样的 for 循环:

for (int i = 0; i < 10; i++) {
Producer producer = new Producer(i);
producer.run();
}

我想让每个生产者添加一些单词到HashMap单词中。如果我只在 for (int....) 语句中添加 HashMap<...> 语句,它会起作用吗?

不是,我该怎么做才能实现这个目标?

最佳答案

恐怕您没有足够准确地指定问题,无法得到回答。

Does it work if I just put the HashMap<...> words about the for (int....) statement?

几乎就是这样;也就是说,它确实会创建一个新的 HashMap (前提是“话”是对的)。它不会做的是它不会确保 map 已同步。正如@Thilo 在上面的评论中所说,有两种简单的方法可以做到这一点:

  1. ConcurrentHashMap为您提供简单的多线程就绪 map 实现
  2. Collections.synchronizedMap包装您选择的 map ,使其为多线程环境做好准备

这些方法(以及更多)的优点和缺点可以在 What's the difference between ConcurrentHashMap and Collections.synchronizedMap(Map)? 找到。

关于java - Java中如何让多个线程操作一个数据对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17738522/

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