这是一个防止程序运行多次的程序!有几个看不懂!
为什么这个程序能实现防止运行多次呢?
FileChannel,FileLock 这2个类到底有什么用啊.
文件通道到底是什么东东?
import java.io.File;
import java.io.RandomAccessFile;
import java.nio.channels.FileChannel;
import java.nio.channels.FileLock;
import java.nio.channels.OverlappingFileLockException;
import java.util.RandomAccess;
import javax.swing.JOptionPane;
public class A1 {
private FileChannel channel;//文件通道究竟 是什么东西?
private FileLock lock;//还有这个类.
private File file;
public A1(String lockFileName) {
file = new File(lockFileName);
}
public boolean isAppActive() {
try {
channel = new RandomAccessFile(file, "rw").getChannel();
try {
lock = channel.tryLock();
} catch (OverlappingFileLockException e) {
closeLock();
return true;
}
if (lock == null) {
closeLock();
return true;
}
Runtime.getRuntime().addShutdownHook(new Thread() {
public void run() {
closeLock();
deleteFile();
}
});
return false;
} catch (Exception e) {
closeLock();
return true;
}
}
protected void deleteFile() {
try {
file.delete();
} catch (Exception e) {
}
}
private void closeLock() {
try {
lock.release();
} catch (Exception e) {
}
try {
channel.close();
} catch (Exception e) {
}
}
public static void main(String[] args) {
A1 a = new A1(".lock");
if (a.isAppActive() == true)
JOptionPane.showMessageDialog(null, "已有一个程序在运行,程序退出");
try {
Thread.sleep(10000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
...全文
相关推荐
微信小程序防止多次点击跳转(函数节流)
主要介绍了微信小程序防止多次点击跳转问题(函数节流),本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
禁止一个程序运行多次
20m的限制太麻烦了,好多好东西无法上传·
Android防止service多次执行startCommand
Android防止service多次执行startCommand 博客地址:http://blog.csdn.net/yuzhiqiang_1993/article/details/78211385
C#如何防止程序多次运行的技巧
主要为大家详细介绍了C#如何防止程序多次运行的技巧,供大家参考,感兴趣的小伙伴们可以参考一下
防止程序多次打开
防止程序多次打开防止程序多次打开防止程序多次打开


非技术区
