栗原です。
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