Index: [Article Count Order] [Thread]

Date:  Mon, 2 Oct 2000 12:19:01 +0900
From:  tetsuya@....jp
Subject:  [XP-jp:00999] Re: ファイル	ロックユーティリティ
To:  extremeprogramming-jp@....jp (extremeprogramming-jp ML)
Message-Id:  <97BA340C0480D411BDA800062939A1890607BC@....jp>
Posted:  Mon, 2 Oct 2000 12:16:59 +0900 
X-Mail-Count: 00999

栗原です。

firo@....jp [mailto:firo@....jp] wrote:

> 例外発生時に、lockFileフィールド値をnullする、という方法
> ではなく、createというbooleanを使ったのは、lockFileフィールド
> は、newした時点で値がはいるので、
> 
>  FileLock fileLock = new FileLock("lock");
>  fileLock.release();
> 
> って、書いちゃうと、自分が作ったファイル以外でも削除可能に
> なっちゃうと思ったからです。

確かにそうですね。

> /*
>  * $Id$
>  */
> package XP.jp.co.esm.wiki.extremedomo.util;
> import java.io.*;
> 
> public class DeleteSafeFileLock extends FileLock{
>     public DeleteSafeFileLock(String nameOfLockFile){
>         super(nameOfLockFile);
>     }
>     public void attempt()
>         throws FileLockException {
> 
>         attempt(0);
>     }
>     public void attempt(long milliSec)
>         throws FileLockException{
> 
>         super.attempt(milliSec);
>         create = true;
> 
>     }
>     public void release() {
>         if (! isCreate()) return;
>         super.release();
>     }
> 
>     public final boolean isCreate(){
>         return create;
>     }
> 
>     private boolean create = false;
> }

FileLockクラス(およびサブクラス)を、限定した範囲で使用する
という条件でしたら良いのではないでしょうか。
# もともと、そんな心配をすること自体が、このプロジェクトでは
# 関係ないですもんね:-)
# クラスの中に変化する状態があると、"普通の(同一JVMでの)"
# 並列処理プログラミング時に、混乱すると思っただけなので、そ
# もそも杞憂です。

ということで、このクラスは利用しましょう。
このクラスを使えば、try-catchを一段階減らすことができますし。

---
Tetsuya Kurihara
tetsuya@....jp