首页 > 代码库 > java程序在一个电脑上只启动一次,只开一个进程
java程序在一个电脑上只启动一次,只开一个进程
方案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; }}
java程序在一个电脑上只启动一次,只开一个进程
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。