【问题标题】:Hashmap for parallel programming用于并行编程的哈希图
【发布时间】:2014-01-15 08:39:26
【问题描述】:

我在我的服务中创建了一个对象的哈希图,作为私有成员变量。 但是,我听说哈希图不适合并行编程。 我不明白这意味着什么,它会对我的服务产生什么影响/副作用。 我遇到了并发哈希图。我应该改用那些吗? 两者有什么区别,什么时候应该使用其中一个或另一个? 如果有人有这方面的知识,请帮助!

【问题讨论】:

  • 除非你的android应用是多线程的并且线程使用hashMap,那么你就不用担心了。
  • 但我不明白的是,我创建的 hashmap 对象不是静态的。因此,每个线程都有自己的 hashmap 对象(除非不同的线程在同一个对象上工作),并且不会干扰其他线程的 hashmap。在这种情况下,我不需要担心让我的 hashmap 并发/线程安全。对。

标签: android parallel-processing hashmap concurrenthashmap


【解决方案1】:

当您谈论 Java 中的并行编程时,您只会谈论多线程应用程序。 只有当多个线程可以访问该数据结构时,您才需要担心您的数据结构是线程安全的。这与静态数据结构或实例变量无关。例如,如果在您的服务中创建的不仅仅是线程,并且所有这些线程都访问哈希映射,您可能需要同步对该哈希映射的访问。 在这些情况下,即使您使用线程安全的数据结构,请记住,线程安全仅在单个操作上得到保证。 这意味着,例如,如果您有一段代码对数据结构执行多项操作,并且您希望这些操作是原子的,则您必须自己同步线程以使该事务成为原子的。 为了更好地理解这个论点,请看一下 http://docs.oracle.com/javase/tutorial/essential/concurrency/index.html

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-03
    • 2018-10-31
    • 2023-04-04
    • 2012-02-26
    • 1970-01-01
    相关资源
    最近更新 更多