限制只能有一個Java Application執行

Restriction Java Application only one instance

本文參考:

http://nakkaya.com/2009/04/12/java-single-instance-application/

許多時候我們會希望 Java 應用程式只執行一次,比方:常駐系統的程式

但是該如何限定系統只有一個 process 執行呢 ?

有兩種常見的方式:

1. 利用 Socket port 鎖定。

try {
// Use Socket Port Lock
ServerSocket socket = new ServerSocket(37264, 0, InetAddress.getByAddress(new byte[] {127,0,0,1}));
}catch(java.net.BindException b){
System.out.println(“Socket Already Running…");
}

2. 利用 暫存區域的檔案鎖定。

File f = new File(System.getProperty(“java.io.tmpdir") + “RingOnRequest.lock");
if (f.exists()) {
f.delete();
}
FileChannel channel = new RandomAccessFile(f, “rw").getChannel();
if (channel.tryLock() == null) {
channel.close();
System.out.println(“File Already Running…");
System.exit(1);
}

 

 

 

廣告

About fenjj

Perfect !!??...
本篇發表於 Uncategorized。將永久鏈結加入書籤。

發表迴響

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com Logo

您的留言將使用 WordPress.com 帳號。 登出 / 變更 )

Twitter picture

您的留言將使用 Twitter 帳號。 登出 / 變更 )

Facebook照片

您的留言將使用 Facebook 帳號。 登出 / 變更 )

Google+ photo

您的留言將使用 Google+ 帳號。 登出 / 變更 )

連結到 %s