FileでLock

単純だけど限定的に使えそうなロック

import java.io.File;
/**
 * ファイル有無ロック.
 */

public final class FilebaseLock{
   private File lockFile;

   public FilebaseLock(String filepath){
      this.lockFile = new File(filepath);
   }
   /**
    * ロック開始.
    * @return true ロック成功
    */

   public boolean begin(){
      return this.begin(0);
   }
   /**
    * ロック開始.
    * @param maxSec 排他最大待ち合わせ時間を秒数で指定する
    * @return true=ロック成功、false=ロック失敗
    */

   public synchronized boolean begin(int maxSec){
      try{
      for(int n=maxSec;0 < n || maxSec < 1;n--){
         if (this.lockFile.createNewFile()) return true;
         try{Thread.sleep(1000);}catch(InterruptedException e){}
      }
      }catch(Exception e){
      }finally{
      }
      return false;
   }
   /**
    * ロック終了.
    */

   public void end(){
      if (this.lockFile.exists()){
         this.lockFile.delete();
      }
   }
}
----------------------------------------------------
(使用例)
   FilebaseLock s = new FilebaseLock(filepath);
   try{
   boolean b = s.begin(60);
  // 最大 60 秒 待つ。 引数なしの begin(); 実行なら、永久に待つ!!
         // true=ロック成功、false=ロック失敗
       :  //対象処理
   }finally{
      s.end();
   }