0
我在Spring批處理應用程序中使用Java NIO。應用程序在不同JVM上運行的所有應用程序實例中查找/ shared共享磁盤所在的目錄(例如/ shared/inbox)。移動文件時不釋放鎖
爲了避免多個線程讀取相同的文件,在我的ItemReader中,我使用FileLock並避免其他線程從中讀取它。
當我完成閱讀時,我想將文件移動到另一個目錄(例如/ shared/archive)。但是Files.move方法不能做到這一點,除非我放棄FileLocl,並且如果我放棄了鎖定,我會冒着其他線程挑選文件的風險。
問題是,我可以將文件從收件箱歸檔而不放棄FileLock嗎?
那麼顯然不是文件。使用共享文件夾將無濟於事。 – EJP
難道你不能只複製文件,鎖定新文件,然後釋放舊鎖? –
我最終通過創建另一個tmp文件來解決問題,以指示我的應用程序的其他線程該文件已被線程拾取。然後我釋放鎖並移動文件。不夠優雅,但它現在完成了這項工作。 –