我有一個文件模擬10X3陣列。第一列是一個序列號,女巫是獨一無二的,所以我可以分辨每一行。我問是否有可能同步2個線程寫入同一個文件,根據它們的行來鎖定它們(如果線程2在同一行寫入線程1想寫入的話,線程1不能訪問文件,它們可以同時寫入其他行)。我有一個包含10個ReentrantLock()項目的Lock數組,每個Lock項目都會鎖定相應的id行(他們在爲文件搜索ID之前獲取鎖定)。簡單的方法是將文件加載到數組中。但我想知道如果我能在文件中實現這一點。我不深入瞭解Java中的文件是如何工作的,但我主要關心的是,當他們在文件中同時寫入時,最後結束的線程將給出文件的最終值,因此迄今爲止所做的任何更改由其他線程將被刪除,因爲該文件需要保存。同時寫入JAVA中的多個線程的單個文件,按行同步
-1
A
回答
1
有一個文件,這是不可能的,我認爲你提到的原因。
如果你真的想用純文本文件做到這一點,你可以爲每一行創建一個文件。另一種選擇是使用Document。一旦完成所有工作,將文檔解析爲純文本文件應該很容易。
最簡單的解決方案是在我看來使用數據庫,特別是如果有機會在稍後增加數組的大小。
+0
我想我會去與陣列。當然,一個數據庫將是最好的想法,但我想要一個項目。我正在考慮這兩種方式(因爲我們有文件而不是數據庫)。也許當我完成它時,我會測試其他方法併發布一些結果:) – 2015-04-02 16:01:16
相關問題
- 1. 將幾個線程同步寫入到java中的同一個文件中
- 2. Java - 寫入同一文件的多個線程
- 3. 從多個線程寫入相同的文件。同步?鎖定? [pthreads] [PHP]
- 4. Java多個文件不同的線程
- 5. 爲Clojure中的多個閱讀器/單個寫入器同步線程
- 6. 的Java多線程同步
- 7. 多個線程可以同時將數據寫入文件嗎?
- 8. Java從多個線程併發寫入單個文本文件?
- 9. Java線程:同步的價值讀寫同一個對象
- 10. 同步多個線程
- 11. 同步.NET中的多個線程4
- 12. 無意的線程同步時寫入文件
- 13. 寫多個文件同時
- 14. 如何同時寫入單個文件?
- 15. 多個打開同一個文件並同時寫入同一個文件PHP?
- 16. 同步多線程JAVA
- 17. Java - 多線程和同步
- 18. Java多線程同步
- 19. Java多線程同步
- 20. Java多線程同步塊
- 21. Java中的同步多線程(Apache HTTPClient)
- 22. Java中的多線程和同步
- 23. 從ruby中的多個線程寫入單個文件
- 24. java中的線程/同步
- 25. 多個同時訪問單個線程
- 26. ArrayList,線程和同步 - 如何準確同步多個線程
- 27. Node.js同步寫入一個csv文件
- 28. 在同一文本文件上寫入Java多個程序
- 29. 運行一個多線程程序同步非常慢Java
- 30. 更簡單的方法來同步Java中的2個線程?
爲什麼你需要同時寫入文件?按順序執行這些更改會不會更簡單? – 2015-04-02 15:28:31
我不相信Java的'OutputStream'支持像這樣通過文件中途寫入。可能還有另一種方法可以做到這一點,但在我10年的Java行業經驗中,這從來沒有必要或實用。另一件需要考慮的事情是磁盤總是比CPU慢,所以多線程寫入不會讓你獲得任何加速。我認爲,只有在將多個文件寫入多個獨立磁盤的情況下才能獲得加速。 – CodeBlind 2015-04-02 15:29:58
[This](http://stackoverflow.com/q/7565034/2675154)對於C++來說是一個類似的問題,但也許答案給你一些一般的見解。 – honk 2015-04-02 15:32:58