Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/323.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 线程唯一数据_Java_Multithreading_Thread Safety - Fatal编程技术网

Java 线程唯一数据

Java 线程唯一数据,java,multithreading,thread-safety,Java,Multithreading,Thread Safety,我需要维护一个hashmap,它应该对所有执行的线程公开。 例如,由一个特定线程更新的hashmap应该也可用于其他线程,反之亦然。请建议我使用Java实现 主程序包含hashmap。从这个主线程,我将触发许多线程。每个线程应该访问主程序中可用的相同hashmap 提前感谢。Java中的问题是在多个线程之间不共享变量:只需将对对象的引用传递给线程,就可以轻松地做到这一点。请记住,您需要确保安全访问它。。。并发修改可能是个麻烦。我建议您查看java并发教程,这是一个非常好的起点:hashmap可以

我需要维护一个hashmap,它应该对所有执行的线程公开。 例如,由一个特定线程更新的hashmap应该也可用于其他线程,反之亦然。请建议我使用Java实现

主程序包含hashmap。从这个主线程,我将触发许多线程。每个线程应该访问主程序中可用的相同hashmap


提前感谢。

Java中的问题是在多个线程之间不共享变量:只需将对对象的引用传递给线程,就可以轻松地做到这一点。请记住,您需要确保安全访问它。。。并发修改可能是个麻烦。我建议您查看java并发教程,这是一个非常好的起点:

hashmap可以是静态的,并且可以使用类名在线程中访问。我想这是一种解决方案,但并发性可能是一个问题。期待关于这个问题的任何其他好的解决方案。

不要让它成为静态的-这样会产生并发问题,并降低代码的可测试性。相反,请使用并发哈希映射:


并将对它的引用传递给每个需要它的线程。

在这里查找所有线程安全的数据结构。。。


我想您需要一个并发哈希映射。如果您可以将地图更改为列表,则可以使用CopyOnWriteArrayList,这是一种高效、安全的读写列表方式。

如果您让我们知道您使用的是哪种语言和环境,可能会有所帮助。

。。很抱歉它在Java中…hashmap可以是静态的,并且可以使用类名在线程中访问。我想这是一个解决办法。期待关于这个问题的任何其他好的解决方案。提前谢谢。