【发布时间】:2011-06-09 18:10:32
【问题描述】:
我正在编写一个应用程序,我需要从单个文件中读取块,每个块大约是 512 字节。我也需要同时写块。
我的想法之一是 BlockReader implements Runnable 和 BlockWriter implements Runnable 和 BlockManager 管理读者和作者。
在我发现的大多数示例中,我看到的问题是锁定问题和潜在的死锁情况。有什么想法可以实现吗?
【问题讨论】:
-
不按顺序写入无论如何都会损害性能。我认为具有单个工作(写入)线程的阻塞队列解决方案会提供更好的性能和更少的麻烦......
-
@extraneon 似乎这应该是一个答案而不是评论;)
-
只是为了清楚起见 - 是并发编写需求,还是只想让数据生成线程在完成后转储他们的数据,以便他们可以继续处理一些不同的块?
-
WarmWaffles 你指定并发写,我的方案不做并发写:(
-
@extraneon 后者,加载器显然会将块加载到内存中,用户会弄乱它,然后当完成时 BlockWriter 会将块提交到文件中,然后从内存中删除块.
标签: java multithreading java-io