icemorning789 2010-05-12 13:50
浏览 240
已采纳

怎么样用一个文件来实现队列?

现在有这样一个需求,一个java程序不停的往一个文件里add数据,另一个java程序不停的从同一个文件里poll数据.相当于内存中的list.有什么好的实现方法,不管用io还是nio只要能实现就行.

  • 写回答

1条回答 默认 最新

  • iteye_21211 2010-05-12 17:41
    关注

    这个需求有意思。如果是我来做,我会这么想。

    首先这是经典的生产消费者问题,您完全可以找一篇文章来看看应该怎么处理。

    假设(1) [b][color=red]A线程[/color][/b]忘里面写,[b][color=red]B线程[/color][/b]往外读。
    假设(2) 共享文件叫common.

    前提: 这个文件里面不能无限存数据,所以说数据必须被清除,或者保持一定量的数据。

    假如说只要数据被读取过,就可以被清除,那么可以遵循下列原则:
    (1) B线程只要找不到common文件,那么读取到的内容就是空,也就是说没有可读的数据。
    (2).A找不到文件,就创建文件common.
    (3).A在往里写数据之前,需要获取文件的lock 参见FileChannel 和FileLock。
    (4).B在读取之前也来获取这个lock,只有获取了才能读取。
    (5).B读取之后把这个文件清空或删除。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 数学建模招标中位数问题
  • ¥15 phython路径名过长报错 不知道什么问题
  • ¥15 深度学习中模型转换该怎么实现
  • ¥15 HLs设计手写数字识别程序编译通不过
  • ¥15 Stata外部命令安装问题求帮助!
  • ¥15 从键盘随机输入A-H中的一串字符串,用七段数码管方法进行绘制。提交代码及运行截图。
  • ¥15 TYPCE母转母,插入认方向
  • ¥15 如何用python向钉钉机器人发送可以放大的图片?
  • ¥15 matlab(相关搜索:紧聚焦)
  • ¥15 基于51单片机的厨房煤气泄露检测报警系统设计