Index: [Article Count Order] [Thread]

Date:  Tue, 3 Oct 2000 11:15:09 +0900
From:  Nakamura Tadashi <Nakamura.Tadashi@....jp>
Subject:  [XP-jp:01018] Re: ファイルロックユーティリティ
To:  extremeprogramming-jp@....jp (extremeprogramming-jp ML)
Message-Id:  <A9771C1A05F3D211BA680008C707B29D0244CD92@ODAPEXC1>
Posted:  Tue, 3 Oct 2000 11:10:39 +0900 
X-Mail-Count: 01018

中村@セイコーエプソンです.

> あう。誤解されています。
ありゃ.

> このFileLockクラスは、それぞれ別のJVMからのアクセスを想定して作成され
> ています。
> よって、File#deleteOnExit()を指定することで、JVM終了時に必ずロックファ
> イルが削除されてしまうと都合が悪いのです。
うーん.単純にロックをした(ファイルを作成した)プロセスが終了する時には
きちんとロックをはずす(ファイルを削除する)という処理ではないのでしょうか?
File#createNewFile()は作成できたらtrueが返りますから,
その後にFile#deleteOnExit()を設定するというのでは駄目なのでしょうか?

例)
	File lock = new File(".lck");
	if (!lock.createNewFile()) {
		throw new Exception("Lock is used");
	}
	lock.deleteOnExit(); // ここで呼ぶ!
	try {
		// リソースへの処理
	} finally {
		lock.delete();
	}
	
> # 別プロセスで作成されたロックファイルが消されてしまい、その間に更に
> # 別プロセスが割り込んできてしまうため。
もちろん,File#createNewFile()の判定を待たずにFile#deleteOnExit()を呼んだ
ら,
自分が取れていないロックを消すことになりそうですが.

-----
NAKAMURA, Tadashi
Network Technology Laboratory
Information Tech. R&D Dept.
SEIKO EPSON Corp.
tel +81-42-535-1733 fax -1734

Any fool can write code that a computer can understand.
Good programmers write code that humans can understand.
                                              by M.F.