【问题标题】:Another way to solve the Dining Philosopher (need a point in the right direction) [closed]解决餐饮哲学家的另一种方法(需要指向正确的方向)[关闭]
【发布时间】:2009-03-03 00:39:20
【问题描述】:

对于一项编程任务,我被要求实施解决餐饮哲学家问题的方法。我必须通过两种方式这样做:

  1. 使用 wait() 和 notifyAll() 机制
  2. 使用 Java API 中提供的现有并发数据结构

我已经完成了第一个实现。我的教授在第二步谈论哪种并发数据结构?我不记得她提过什么。我不需要任何源代码,只需要一个指向正确方向的指针。

【问题讨论】:

    标签: java multithreading dining-philosopher


    【解决方案1】:

    您可能想查看java.util.concurrent Javadoc 页面以获得一些想法。这些不是唯一的并发数据结构(一些 java.util 数据结构也具有内置的并发支持),但这是一个很好的起点。

    Collections.synchronizedList 不是我所说的“现有并发数据结构”——它是不支持并发的数据结构的包装器。

    【讨论】:

    • 是的,java.util.concurrent.ConcurrentMap 接口中有几个有趣的方法可以让您实现解决方案。
    【解决方案2】:

    也许她的意思是将 Java 集合包装在同步包装器中,例如使用Collections.synchronizedList(),或java.util.concurrent 中始终同步的数据结构,例如CopyOnWriteArrayList.

    【讨论】:

      【解决方案3】:

      不是真正的数据结构...但在您可能需要的附近http://java.sun.com/javase/6/docs/api/java/util/concurrent/Semaphore.html

      【讨论】:

      • 如果你正朝着这个方向前进,那么 java.util.concurrent.locks.Lock 有一些有趣的方法。 tryLock() 看起来特别合适。
      【解决方案4】:

      Java API 中有一个并发库。

      它有一些收藏

      看java.util.concurrent包

      http://java.sun.com/j2se/1.5.0/docs/api/java/util/concurrent/package-summary.html

      【讨论】:

        猜你喜欢
        • 2017-04-10
        • 2016-03-04
        • 2010-10-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多