簡體   English   中英

多個閱讀器文件Java

[英]Multiple reader file java

我目前在Spring 3中使用Java 6。

我有一些正在讀取同一文件的進程,在這種情況下是XML文件。

另外,此過程需要更新該文件的內容,而我需要更新日期。

該過程同時運行,因此它們可能會同時讀取並嘗試寫入。

我聽說過ReadWriteLock,它可以有多個讀取器,只有一個寫入器。 我目前正在考慮。 但是由於該過程運行迅速,

當進程A當前正在編寫更新,而進程B在等待並且另一個進程C在等待編寫更新時,將出現一種情況。 如果流程B正在更新同一元素,則流程B可能只是舊的更新。

有什么辦法可以實現嗎?

謝謝,

如果所有“進程”都是線程,請使用同步。 這正是目的。 ReadWriteLock不會保護文件本身。 它用於協調對內存中對象的共享訪問。

像這樣的偽代碼:

class XmlDatabase {

Document doc = readXml();

synchronized Date readDate()  {
    Date _date = getDateFromDoc(doc);
    return _date;
}

synchronized void writeDate(Date _date) {
    addDateToDoc(_date);
    writeDocToFile(doc);
}  

}

很多人會告訴您同步速度很慢,等等。除非您要實現使用同步原語進行大規模並發的工作,否則效果會很好。 如果需要,以后總是可以使用java.util.concurrent進行優化。 使用純同步的簡單性和可讀性值得。 如果需要讓其他進程訪問數據,只需用RMI或其他一些網絡解決方案包裝數據庫類。

暫無
暫無

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

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