码迷,mamicode.com
首页 > 编程语言 > 详细

java程序 避免重复启动的方法

时间:2019-10-13 01:10:34      阅读:124      评论:0      收藏:0      [点我收藏+]

标签:public   system   tac   new   stack   error   current   应用程序   sleep   

http://www.cppblog.com/biao/archive/2010/12/23/137254.html

 1 package swingtest;
 2 
 3 import java.io.File;
 4 
 5 import java.io.RandomAccessFile;
 6 
 7 import java.nio.channels.FileChannel;
 8 
 9 import java.nio.channels.FileLock;
10 import java.util.concurrent.TimeUnit;
11 
12 
13 public class SingleApplication {
14 
15     // 在应用程序的main方法里调用此函数保证程序只有一个实例在运行.
16 
17     public static void makeSingle(String singleId) {
18 
19         RandomAccessFile raf = null;
20 
21         FileChannel channel = null;
22 
23         FileLock lock = null;
24 
25 
26         try {
27 
28             // 在临时文件夹创建一个临时文件,锁住这个文件用来保证应用程序只有一个实例被创建.
29 
30             File sf = new File(System.getProperty("java.io.tmpdir") + singleId + ".single");
31 
32             sf.deleteOnExit();
33 
34             sf.createNewFile();
35 
36 
37             raf = new RandomAccessFile(sf, "rw");
38 
39             channel = raf.getChannel();
40 
41             lock = channel.tryLock();
42 
43 
44             if (lock == null) {
45 
46                 // 如果没有得到锁,则程序退出.
47 
48                 // 没有必要手动释放锁和关闭流,当程序退出时,他们会被关闭的.
49 
50                 throw new Error("An instance of the application is running.");
51 
52             }
53 
54         } catch (Exception e) {
55 
56             e.printStackTrace();
57 
58         }
59 
60     }
61 
62 
63     public static void main(String[] args) throws Exception {
64 
65         SingleApplication.makeSingle("single.test"); // 保证程序只有一个实例在运行.
66 
67 
68         // 测试: 模拟一个程序正在运行5秒
69 
70         System.out.println("Start");
71 
72         System.out.println("Waiting 5 seconds.");
73 
74         TimeUnit.SECONDS.sleep(25);
75 
76 
77         System.out.println("End");
78 
79     }
80 
81 }

 

java程序 避免重复启动的方法

标签:public   system   tac   new   stack   error   current   应用程序   sleep   

原文地址:https://www.cnblogs.com/yangxiaobo-blog/p/11664348.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!