1

我的应用程序有时应该读写文件。而且这项工作可能发生在多线程中,所以我应该同步这些资源。这是我的代码:

// write to file
FileOutputStream fos = openFileOutput("data.dat", Context.MODE_PRIVATE);
synchronized (fos) {
     ObjectOutputStream writer = new ObjectOutputStream(fos);       
     // continue to write
}

// read to file
FileInputStream fis = openFileInput("data.dat");
synchronized (fis) {
    ObjectInputStream reader = new ObjectInputStream(fis);
    // continue to read
}

上面的代码安全吗?这意味着“data.dat”总是只能在一个线程中读取或写入?如果错了,请纠正我。

谢谢 :)

4

1 回答 1

2

使用文件锁定:http ://en.wikipedia.org/wiki/File_locking告诉其他线程输出文件正在使用中。如果您的应用程序专门使用输出文件,synchronized则应防止其他线程同时执行该部分代码。或者,最后,您可以考虑使用IntentService对请求进行排队并一一处理

于 2013-05-18T21:06:39.977 回答