gpt4 book ai didi

Java 线程 - 工作线程更改其老板的 HashMap

转载 作者:行者123 更新时间:2023-11-29 05:48:09 25 4
gpt4 key购买 nike

我有一个监听请求的类(服务器),一旦发出请求,就会启动一个新线程来处理它。处理程序线程将读入数据,将其存储到 HashMap 中并完成。我已将 hashmap 放在服务器类中,因为可以有多个处理程序线程在数据传入时读取数据。

我很困惑这是否是正确的方法,因为为了更改/访问 HashMap ,我必须编写 getter 和 setter 并将服务器类传递给每个工作线程。一些示例代码来尝试描述我的查询:

public class Server implements Runnable {
private HashMap<String, Integer> data;

public void run() {
while(true) {
Socket s = serverSocket.accept();
Handler h = new Handler(s);
Thread t = new Thread(h);
t.start();
}
}
}

public class Handler implements Runnable {

public void run() {
//read in data from socket
data.put(d); //access the hashmap and insert data in
}

}

如有任何建议,我们将不胜感激。谢谢。

最佳答案

您的方法很好,但您应该使用 ConcurrentMap , 或 synchronize 在 map 上。第一种方法更好,因为同步集合是 optimized in order to avoid blocking只要有可能。

关于Java 线程 - 工作线程更改其老板的 HashMap ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15045243/

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