aspose file tools*
The moose likes XML and Related Technologies and the fly likes Multi-threading and xml Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login
JavaRanch » Java Forums » Engineering » XML and Related Technologies
Bookmark "Multi-threading and xml" Watch "Multi-threading and xml" New topic
Author

Multi-threading and xml

Dorothy Taylor
Ranch Hand

Joined: Nov 26, 2007
Posts: 104
Hi

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?
Ulf Dittmer
Marshal

Joined: Mar 22, 2005
Posts: 39549
    
  27
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.


Ping & DNS - updated with new look and Ping home screen widget
Dorothy Taylor
Ranch Hand

Joined: Nov 26, 2007
Posts: 104
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?
Ulf Dittmer
Marshal

Joined: Mar 22, 2005
Posts: 39549
    
  27
Exactly.
Paul Clapham
Bartender

Joined: Oct 14, 2005
Posts: 18141
    
    8

To implement that you can use one of the classes which implement BlockingQueue -- ArrayBlockingQueue or LinkedBlockingQueue would be a couple of straightforward choices.
 
Consider Paul's rocket mass heater.
 
subject: Multi-threading and xml
 
Similar Threads
files using threads
enabling side menu based on user role in JSP?
Internationalization of Java Apps to Arabic
XML Log perfromance
Problem validating with DTD from within web app