【问题标题】:how to avoid synchronization issue in writing contents to file - Java ( android)如何避免将内容写入文件时出现同步问题 - Java ( android)
【发布时间】:2014-03-13 16:08:53
【问题描述】:

我有一个需求,即从可能同时发生的多个操作中更新文件内容。

我需要对每个请求进行排队,并为每个请求一个一个地更改文件的内容。

我正在使用 android 广播接收器,它接收更改文件内容的事件。

如何将这些事件排队并在另一个请求之后对文件进行更改。

请提供一些建议,或者如果可能,请提供我可以参考的任何链接。

【问题讨论】:

  • 让每个请求发送一个代码,保存这个代码,实现一个观察者来检查代码并将其中继到一个同步块进行写入。让代码优先或请求调度号。或者,您也可以使用广播通知等待写入者当前持有同步锁写操作的线程的状态。
  • 不清楚。第一:这些事件写在文件的什么地方?在末尾?文件中的任何位置?
  • @fge - 需要为每个事件重写整个文件
  • 呃,我明白了。事件的频率是多少?
  • 它可能会在 2 分钟内发生 2-5 个事件,也可能不会发生 1 小时......

标签: java android file queue synchronize


【解决方案1】:

我在几次前遇到了 Android 内部使用的一个类,用于实现您想要达到的目的,现在可以通过 Android Support Library 获得。

它叫做AtomicFile,记录在here,你可以找到它的实现here

【讨论】:

    【解决方案2】:

    我用单线程执行器。收到事件后,我们可以将 runnable 发布到执行程序。由于池中有 1 个线程,这些任务将按顺序运行。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-01-03
      • 2013-12-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多