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;
    }

}
復制代碼

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM