【问题标题】:Java : Multi-threaded linked list access synchronizationJava:多线程链表访问同步
【发布时间】:2011-11-07 05:48:12
【问题描述】:

我的方法在这里可能是错误的(或实施得更好)。如果是这样,请告诉我一个更好的主意。

我正在尝试实现一个适用于本地文件或网络的形状文件阅读器。但是,有些 shapefile 非常大,可能需要一段时间才能完全加载。我想将加载类分离到它自己的线程中。我还想让主线程在加载的时候从加载器中提取加载的数据,这样可以立即显示出来。

为了实现这一点,我想我可以在加载器中维护一个链接列表,其中包含已经完全加载的元素。主线程可以轮询加载器以查看是否已加载任何元素,并提取链表的头部,这会将其从加载器中移除。

我可以使用什么机制来确保主类和加载器类不会同时尝试访问链表的头部?我知道这涉及同步,但我对 Java 线程完全是个菜鸟。只需要有人指出我正确的方向。

如果您有完全不同的想法,我会全力以赴。 谢谢

【问题讨论】:

    标签: java synchronization


    【解决方案1】:

    这听起来不像是生产者-消费者问题吗? 最简单的方法是使用 BlockingQueue

    例如:使用此处显示的概念.. http://www.java2s.com/Code/Java/JDK-6/ProducerandconsumerbasedonBlockingQueue.htm

    【讨论】:

    • 他们也可以使用 java.util.concurrent.CompletionService。 (它做了非常相似的事情)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多