zoukankan      html  css  js  c++  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;
        }
    
    }
    复制代码
  • 相关阅读:
    《剑指offer》 面试题43 n个骰子的点数 (java)
    《剑指offer》面试题45 圆圈中最后剩下的数字(Java版本)
    《剑指offer》面试题39 二叉树的深度(java)
    《剑指offer》面试题32----从1到n整数中1出现的次数
    快速排序思路整理
    《Java程序猿面试宝典》之字符串
    Tomcat的server.xml
    easyui combobox 清除选中项目 和 清空option选项
    2019
    throw UnsupportedOperationException
  • 原文地址:https://www.cnblogs.com/exmyth/p/5827423.html
Copyright © 2011-2022 走看看