Login | Register   
Twitter
RSS Feed
Download our iPhone app
TODAY'S HEADLINES  |   ARTICLE ARCHIVE  |   FORUMS  |   TIP BANK
Browse DevX
Sign up for e-mail newsletters from DevX


Tip of the Day
Language: Java Language
Expertise: Beginner
Mar 20, 1997

How to Prevent Simultaneous Access

Question:
How do you lock a file in Java to prevent simultaneous multiple accesses?

Answer:
If you're concerned about simultaneous access by independent processes, you'll have to rely on the host OS to prevent this. Perhaps this mechanism can be invoked by a native function that can be imported into your Java program. (It is also possible to set the security manager object associated with a particular virtual machine to prevent access to a file by all threads running in that virtual machine.)

If you're concerned about simultaneous access by independent threads, Java offers an elegant mechanism called a monitor. It's an object containing a shared resource, such as a file, and synchronized methods for accessing that resource. A synchronized method can only be invoked by one thread at a time. Other threads wait in an associated queue.

Returning to your file example, you could create a file monitor containing the file as a member:

   class FileMonitor {

      private FileOutputStream f;

      public FileMonitor(String fname) {
         f = FileOutputStream(fname);
      }

      public synchronized void write(byte b[]) throws IOException {
         f.write(b);
      }

      // etc.
   }

Alternatively, you could create a secure extension of the
FileOutputStream class:

   class SecureFileOutputStream extends FileOutputStream {

      public SecureFileOutputStream(String fname) { super(fname); }

      public synchronized void write(byte b[]) throws IOException {
         super.write(b);
      }

      // etc.
   } 
DevX Pro
 
Comment and Contribute

 

 

 

 

 


(Maximum characters: 1200). You have 1200 characters left.

 

 

Sitemap