トップ 差分 一覧 ソース 置換 検索 ヘルプ PDF RSS ログイン

Javaアプリでの多重起動の抑制

http://d.hatena.ne.jp/vuchi/20090624/1245833728
http://okwave.jp/qa/q2030088.html

個人的にはTCP/IP でやる方法が好きだけど簡単にやるには、
ローカルにロックファイルを作る方法が良い。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
import java.io.File;
import java.io.FileOutputStream;
import java.nio.channels.FileChannel;
import java.nio.channels.FileLock;

public class Sample {
  
  public static void main(String[] args) {
    
    //起動チェック
    final FileOutputStream fos = new FileOutputStream(new File("lock"));
    final FileChannel fc = fos.getChannel();
    final FileLock lock = fc.tryLock();
    if (lock == null) {
      //既に起動されているので終了する
      return;
    }
    
    //ロック開放処理を登録
    Runtime.getRuntime().addShutdownHook(
      new Thread() {
        public void run() {
          if (lock != null && lock.isValid()) {
            lock.release();
          }
          fc.close();
          fos.close();
        }
      }
      );
    
    //処理を続行
  }
}

[カテゴリ: プログラミング言語 > Java]

[通知用URL]



  • Hatenaブックマークに追加
  • livedoorクリップに追加
  • del.icio.usに追加
  • FC2ブックマークに追加

最終更新時間:2013年04月05日 23時21分05秒