有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

并发Android服务之间的java资源共享或文件锁定

我的Android应用程序中有三项服务,由两个广播接收器启动。前两个写入文件并由一个广播接收器触发,因此我可以确保它们一个接一个地执行(通过^{)。第三个是独立的,由一个单独的广播接收器发射,但从前两个写入的同一个文件中读取

因为广播接收器可以在彼此相同的时间或几乎相同的时间被触发,所以文件也可以同时被访问。我怎样才能防止这种情况发生?我希望能够先读后写或者先写后读。我只是不确定这个问题是否与Java并发性一般相似,因为如果我没有弄错的话,安卓服务是一个完全不同的野兽


共 (1) 个答案

  1. # 1 楼答案

    http://developer.android.com/reference/android/app/Service.html 请注意,与其他应用程序对象一样,服务在其宿主进程的主线程中运行。这意味着,如果您的服务要执行任何CPU密集型(如MP3播放)或阻塞(如网络)操作,它应该生成自己的线程来执行该工作

    我建议在单独的线程中读取/写入文件。您可以使用Only one thread at a time!在同一线程中执行此操作