簡體   English   中英

Java Filelock 防止多個 JVM 進程多次寫入不起作用

[英]Java Filelock to prevent multiple writes by multiple JVM processes not working

我正在學習 FileOperations,並且正在編寫一個程序來在 linux 機器上實現 FileLocking。

  • 該程序的目的是,如果多人調用該程序,則該實例應獲取文件鎖(類似於 linux 系統上的flock )。

  • 我通過從兩個不同的終端運行類文件來嘗試我的程序是否正常工作。 但是,它每次都返回true,也就是說,即使第一個進程運行並且沒有釋放鎖,第二個進程也能夠獲取鎖。

我的代碼是

    public boolean getLock() throws FileNotFoundException, IOException{ 
    File lockFile = new File(conf_file);
    System.out.println("Attempting to aquire"
            + " exclusive lock on " + conf_file);
    RandomAccessFile f = new RandomAccessFile(lockFile, "rw");
    FileChannel channel = f.getChannel();
    FileLock lock;
    lock = channel.lock();
    if(lock != null && lock.isValid()){
        f.close();
        return true;
    }
    else{
        f.close();
        return false;
    }
}

我在這里做錯了什么?

刪除f.close()方法,它應該可以工作。 要刪除評論中的警告,請將這些變量聲明為實例變量,並在可能的另一種方法中執行 f.close ,例如removeLock()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM