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