This week's book giveaway is in the OO, Patterns, UML and Refactoring forum. We're giving away four copies of Refactoring for Software Design Smells: Managing Technical Debt and have Girish Suryanarayana, Ganesh Samarthyam & Tushar Sharma on-line! See this thread for details.
I have an xml file that has to be written by multiple threads running in parallel. How can we ensure that the structural integrity of the xml file i.e. many threads writing into the file can spoil the structure of the xml. One way is to make the write method synchronized, but that is a very high level approach with which only one thread may write at a time. So the other threads are ready with their data but cannot write until the lock is released. Is there a better way to do this?
I don't think there's *any* reliable way to have concurrent writes to a file with predictable results. One approach might be to have the thread that writes to the file be separate from the threads the produce the data - possibly via a Queue data structure of some kind.
Joined: Nov 26, 2007
ok, so you mean that each thread that has something to write will push its message in a queue. At the same time, there is a thread that reads messages from this queue and updates in the file. So again, the writes are sequential since the first messages will be written first and then the next and so on. Is this right?