[英]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.