簡體   English   中英

Java同時在線程之間訪問文件

[英]Java accessing a file among threads at the same time

我對Java文件鎖有些困惑。

這是我的情況。

  1. 每個線程都可以讀取/寫入文件。
  2. 我的文件操作方法可以同時被多個線程調用

而且,我的目標很明確,沒有線程並行寫入文件。 始終允許一個線程寫入文件。

我的問題是

  1. 如果FileOutputStream.write()是線程安全的,則我不必在代碼中放入任何並發機制,因為write()處的代碼將阻塞,直到釋放鎖定的文件為止。 但是,當線程打開文件時,我的程序似乎不會阻塞(我不確定)

  2. 如果FileOutputStream.write()不是線程安全的,那么我將不得不編寫其他代碼以使一次只能由線程訪問的文件。 因此,我使用FileChannel.lock()這樣做。 但是,與JDK文檔不同,它不會阻止而是拋出OverlappingFileLockException。

非常感謝您的明確建議。

它不是線程安全的,您需要以編程方式確保安全。 假設您的應用程序沒有主要性能要求,只需將相關代碼放在同步塊中即可。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM