我的方法在这里可能是错误的(或更好地实施)。如果是这样,请告诉我一个更好的主意。
我正在尝试实现一个使用本地文件或网络的形状文件阅读器。但是,一些shapefile是巨大的,可能需要一段时间才能完全加载。我想将加载类分成它自己的线程。我还希望主线程从加载器中提取加载的数据,同时它仍在加载,因此可以立即显示。
为了实现这一点,我想我可以在加载器中维护一个包含已经完全加载的元素的链表。主线程可以轮询加载器以查看是否已加载任何元素,并提取链表的头部,这将从加载器中删除它。
我可以使用哪些机制来确保主类和加载器类不会同时尝试访问链表的头部?我知道这涉及同步,但我是Java线程的总菜鸟。只需要有人指出我正确的方向。
如果你有完全不同的想法,我会全力以赴。 感谢
答案 0 :(得分:2)
这听起来不像是生产者 - 消费者的问题吗? 最简单的方法是使用BlockingQueue
例如:使用此处显示的概念.. http://www.java2s.com/Code/Java/JDK-6/ProducerandconsumerbasedonBlockingQueue.htm