Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/330.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android中的并发文件访问_Java_Android_Concurrency_Filesystems - Fatal编程技术网

Java Android中的并发文件访问

Java Android中的并发文件访问,java,android,concurrency,filesystems,Java,Android,Concurrency,Filesystems,我知道许多操作系统在文件系统上执行某种锁定,以防止视图不一致。Java和/或Android对文件访问的线程安全是否有任何保证?在我自己编写并发代码之前,我希望尽可能多地了解这一点 如果我错过了已回答的类似问题,请随意关闭此线程。谢谢。正常的读/写功能(FileInputStream等)不提供任何线程安全AFAIK。要实现线程安全,您需要使用。这看起来像: FileInputStream in = new FileInputStream("file.txt"); FileChannel chann

我知道许多操作系统在文件系统上执行某种锁定,以防止视图不一致。Java和/或Android对文件访问的线程安全是否有任何保证?在我自己编写并发代码之前,我希望尽可能多地了解这一点


如果我错过了已回答的类似问题,请随意关闭此线程。谢谢。

正常的读/写功能(FileInputStream等)不提供任何线程安全AFAIK。要实现线程安全,您需要使用。这看起来像:

FileInputStream in = new FileInputStream("file.txt");
FileChannel channel = in.getChannel();
FileLock lock = channel.lock();
// do some reading
lock.release();

我会读的,并注意线程

Android构建在Linux之上,因此继承了Linux的文件系统语义。除非显式锁定文件,否则多个应用程序和线程可以打开该文件进行读/写访问。除非您确实需要跨进程文件同步,否则我建议使用普通的Java同步原语来仲裁对文件的访问。

这正是我所期望的。感谢您的回复。无论如何,我都在考虑使用ReadWriteLock,这样多个线程就可以同时读取。看起来Filelock只在进程之间工作,但不适用于同一个android进程中的线程。