• ベストアンサー

Java ひとつの処理しか実行させない

こんにちは! Javaの初心者です。現在、Webアプリケーションの開発をしています。 大量のデータを扱うため、この処理の部分だけ終わるまで他の人は同じ処理を実行できないようにする、ということをやりたいのですが、どういう手法がありますか?

質問者が選んだベストアンサー

  • ベストアンサー
  • nda23
  • ベストアンサー率54% (777/1415)
回答No.1

適当な共通ファイルをロックしてしまうのは如何でしょうか。 File f = new File("C:/~/LOCK"); FileOutputStream n = new FileOutputStream(f); FileChannel c = n.getChannel(); FileLock k = c.tryLock(); if ( k == null ) {   //ロック負けなので終了する   System.exit(1); } //処理を続行する。 まあ、ミューテックス替わりにファイルを使う方法ですね。 ロック勝ちしたプロセスが終了すると、自動的にロックが解放 されるので、各オブジェクトの後始末は不要です。

jobvba
質問者

お礼

回答ありがとうございました!

jobvba
質問者

補足

そんな方法があったのですね! ミューテックスもちょっと調べてみます。

その他の回答 (2)

  • eden1256
  • ベストアンサー率0% (0/1)
回答No.3

synchronized(Object){   処理内容 } Objectに排他したいオブジェクトを指定します。 もしくは public static synchronized String getItem(){    } メソッドレベルだとこうなります。

jobvba
質問者

お礼

回答ありがとうございました!

  • ww-_-ww
  • ベストアンサー率51% (46/89)
回答No.2

マルチスレッドのこと言ってます? そうならメソッドを同期化(synchronized)すればいいんじゃないですか。 「java マルチスレッド 同期化」でググってみればたくさんやり方は書いてあります。

jobvba
質問者

お礼

回答ありがとうございました!

関連するQ&A