- ベストアンサー
Java ひとつの処理しか実行させない
こんにちは! Javaの初心者です。現在、Webアプリケーションの開発をしています。 大量のデータを扱うため、この処理の部分だけ終わるまで他の人は同じ処理を実行できないようにする、ということをやりたいのですが、どういう手法がありますか?
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
適当な共通ファイルをロックしてしまうのは如何でしょうか。 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); } //処理を続行する。 まあ、ミューテックス替わりにファイルを使う方法ですね。 ロック勝ちしたプロセスが終了すると、自動的にロックが解放 されるので、各オブジェクトの後始末は不要です。
その他の回答 (2)
- eden1256
- ベストアンサー率0% (0/1)
回答No.3
synchronized(Object){ 処理内容 } Objectに排他したいオブジェクトを指定します。 もしくは public static synchronized String getItem(){ } メソッドレベルだとこうなります。
質問者
お礼
回答ありがとうございました!
- ww-_-ww
- ベストアンサー率51% (46/89)
回答No.2
マルチスレッドのこと言ってます? そうならメソッドを同期化(synchronized)すればいいんじゃないですか。 「java マルチスレッド 同期化」でググってみればたくさんやり方は書いてあります。
質問者
お礼
回答ありがとうございました!
お礼
回答ありがとうございました!
補足
そんな方法があったのですね! ミューテックスもちょっと調べてみます。