2012-02-14 6 views
2

次のように私は、ファイルのロックとロック解除方法を持って、のJava - ファイルの共有ファイルのロックを発行

Lockメソッド、

fileLock = fileChannel.tryLock(); 

if (fileLock != null) 
System.out.println("File is locked"); 

ロック解除方法、

fileLock.release(); 

は今、この2つの方法があります2つの並行プロセスによってアクセスされます。現在、プロセスがクラッシュすると、ロック解除前に、JVMがクローズされるまで別のプロセスがファイルにアクセスできなくなります。誰でも助けてくれますか?ファイルをロックするための時間制限を指定することは可能ですか?

+0

'try {...} catch(){...}'の後に、 'finally'ブロックで囲まれた' release() '呼び出しがありますか?なぜスレッドの1つが黙ってクラッシュするのでしょうか?もう1つの質問。あなたは言う:別のプロセス、つまり、異なるJavaスレッドまたは本当に異なるOSプロセスを意味する – Grooveek

+0

@Arpssss: "プロセス"とは "スレッド"を意味しますか?プロセスがクラッシュした場合、JVMが閉じられたことを意味します。あなたの '' fileLock.release() ''が '' finally''ブロックに入る必要があるかもしれないと思います。 – Ash

+0

@Ash、いいえ、私はついにしました。しかし、わかりやすくするために、私はそれを書いていません。私はプロセスを持っていますが、スレッドはありません。ありがとうございます。 – Arpssss

答えて

0

シングルトンパターンを使用します。その後、1つのスレッドだけがファイルにアクセスします。

+1

-1。意味がない。答えではありません。 OPは複数のプロセスについて話しています* – EJP

+0

申し訳ありませんが、明らかにこの問題を正しく理解できませんでした。 – alnasfire

関連する問題