线程唯一数据

时间:2011-06-07 09:17:09

标签: java multithreading thread-safety

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

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

提前致谢。

4 个答案:

答案 0 :(得分:1)

Java中的问题不是在多个线程之间共享变量:您可以轻松地将对象的引用传递给线程。请记住,您需要确保安全地访问它...并发修改可能是一个麻烦。我建议你查看java并发教程,这是一个非常好的起点:http://download.oracle.com/javase/tutorial/essential/concurrency/index.html

答案 1 :(得分:1)

查看所有线程安全数据结构... http://download.oracle.com/javase/6/docs/api/java/util/concurrent/package-summary.html

我猜你需要一个并发的哈希映射。如果您可以将地图更改为列表,则可以使用CopyOnWriteArrayList,它允许高效的thead安全方式来读取列表的写入。

答案 2 :(得分:0)

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

答案 3 :(得分:0)

不要使它静态 - 这种方式存在并发问题,并使您的代码不易测试。相反,使用并发哈希映射:

http://download.oracle.com/javase/1,5.0/docs/api/java/util/concurrent/ConcurrentHashMap.html

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