【发布时间】:2015-12-12 14:53:17
【问题描述】:
我想编写两个适用于单个文本文件的 Android 应用程序。
第一个应用程序(App1)的任务 -
A.检查 sdcard 根目录下是否存在文本文件“abc.txt”。
B.如果不存在,请在 sdcard 的根目录下创建“abc.txt”。
C.继续每隔 5 分钟定期将数据写入 abc.txt。
第二个应用程序(App2)的任务 -
A.检查 sdcard 根目录下是否存在文本文件“abc.txt”。
B.如果存在,则从文件“abc.txt”中读取所有数据并在阅读后将其删除
现在我可以通过每个应用程序单独读取和写入“abc.txt”,但我面临同步问题。我想确保如果第一个应用程序正在写入文本文件,第二个文件必须等到准备好读取文本文件。我会使用
synchronized
关键字如果它是一个应用程序。有人可以在这种情况下帮助我吗?
【问题讨论】:
-
虽然回答的有点笼统,但我会给你一些想法:你显然需要一个外部同步机制。 锁定文件 - 例如“abc.txt.lock”怎么样?两个应用程序都应该在完成工作时创建这样的文件,然后将其删除。两个应用程序还应检查该文件是否存在。
-
@darthvading :请检查 Kathy Sierra 的 scjp 书中的“同步代码(目标 4.3)”..!!你会发现在哪里使用同步词..!!
-
@darthvading:检查这个:firozstar.tripod.com/_darksiderg.pdf .!!
-
我认为你需要
java.nio.channels.FileLock- 请参阅 mfrankli 的答案 stackoverflow.com/questions/9746050/… -
@Seelenvirtuose 我理解你的建议。我仍然觉得这里也有可能陷入僵局。假设 App1 和 App2 都看到“abc.txt.lock”不可用并且都尝试创建它的情况,反之亦然。我知道发生这种情况的可能性很小,但它可能会发生。
标签: java android deadlock synchronized