Java:实现检查程序重复运行
其他
2020-01-28 10:51:24
阅读次数: 0
一、纯Java实现
- 原理是一个文件只能同时被一个进程获取锁。
public class Test{
public static boolean makeSingle(String filePath) {
RandomAccessFile raf = null;
FileChannel channel = null;
FileLock lock = null;
try {
File sf = new File(filePath);
sf.deleteOnExit();
sf.createNewFile();
raf = new RandomAccessFile(sf, "rw");
channel = raf.getChannel();
lock = channel.tryLock();
System.out.println("lock = "+lock);
if (lock == null) {
return false;
}
} catch (Exception e) {
e.printStackTrace();
}
return true;
}
public static void main(String[] args) throws Exception {
if(makeSingle("singleApp.single") == false) {
JOptionPane.showMessageDialog(null,"程序已经运行了!","错误 ",0);
}
}
}
二、通过调用C++封装的DLL去实现
- 以C++调用Win32 API遍历进程去检查重复进程或重复窗口名,最后封装成DLL由Java调用。
- Java调用DLL的方式有:JNI、JNA等
参考资料
发布了56 篇原创文章 ·
获赞 5 ·
访问量 7442
转载自blog.csdn.net/forchoosen/article/details/103534939