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

Posted 昵了个称

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java程序 避免重复启动的方法相关的知识,希望对你有一定的参考价值。

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程序 避免重复启动的方法的主要内容,如果未能解决你的问题,请参考以下文章

在片段中启动 Activity [重复]

22.java方法的定义

20145235 《Java程序设计》第4周学习总结

Java技术jQuery自定义插件开发实践

Java编码辅助工具:Lombok —— 避免重复臃肿的代码,提高效率

避免在 ios 中的 UITableView 中出现重复条目