您的位置:首页 > 编程语言 > Java开发

java程序在一个电脑上只启动一次,只开一个进程

2016-08-31 20:23 375 查看

方案1:

单进程程序可以用端口绑定。程序启动的时候可以尝试看该端口是否已经被占用,如果占用则程序已经启动。

方案2:
你可以在java程序中创建一个隐藏文件,程序退出的时候删除这个文件。这样在程序启动的时候,你判断是否存在这个文件,如果存在说明已经启动。

import java.io.File;
import java.io.IOException;
import java.io.RandomAccessFile;
import java.nio.channels.FileLock;

/**
* FileLockManager 文件锁管理
*
*/
public class FileLockManager {

private FileLock fileLock = null;

private File file = null;

private RandomAccessFile randomAccessFile = null;

public FileLockManager(String fileName) {
this.file = new File(fileName);
}

public FileLockManager(File file) {
this.file = file;
}

/**
* 文件加锁并创建文件
*
* @return
* @throws IOException
*/
public boolean Lock() throws IOException {
if (!this.file.exists()) {
this.file.createNewFile();
this.randomAccessFile = new RandomAccessFile(this.file, "rw");
this.fileLock = this.randomAccessFile.getChannel().tryLock();
if (this.fileLock.isValid()) {
return true;
} else {
return false;
}

} else {
return false;
}

}

/**
* 解锁并删除文件
*
* @return
* @throws IOException
*/
public boolean unLock() throws IOException {
if (!this.file.exists()) {
return true;
} else {
if (this.fileLock != null) {
this.fileLock.release();
}
if (this.randomAccessFile != null) {
this.randomAccessFile.close();
}
if (this.file.delete()) {
return true;
} else {
return false;
}

}

}

/**
* @return Returns the fileLock.
*/
public FileLock getFileLock() {
return this.fileLock;
}

/**
* @param fileLock
*            The fileLock to set.
*/
public void setFileLock(FileLock fileLock) {
this.fileLock = fileLock;
}

}


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: