有 Java 编程相关的问题?

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

java安卓:如何正确地同步资源

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

// 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”始终只能在一个线程中读取或写入数据?如果错了,请帮我改正

谢谢:)


共 (1) 个答案

  1. # 1 楼答案

    使用文件锁定:http://en.wikipedia.org/wiki/File_locking告诉其他线程输出文件正在使用中。如果输出文件被你的应用程序独占使用,那么synchronized应该防止其他线程同时执行这部分代码。或者,最后,您可以考虑使用{< CD2>}来排队请求并逐一处理