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