簡體   English   中英

2個Java進程-一種讀取和一種寫入同一文件

[英]2 java processes - one reading and one writing to the same file

我有兩個Java進程,我希望彼此完全分離。

我認為,執行此操作的最佳方法是:一個將其數據寫出到文件中,另一個將其從該文件中讀取(第二個也可能必須寫入該文件以說其已處理該行)。

我設想的問題與同時訪問文件有關。 我可以使用一種簡單的好方法來解決此問題嗎? 是否有處理此類功能的庫?

最好的描述方法是使用文件實現的簡單直接消息傳遞機制。 (比JMS簡單)。

謝謝丹

如果您想要一個簡單的解決方案,並且可以假定“重命名文件”是一個原子操作(並非完全正確),則每個進程都可以在讀取或寫入文件時重命名該文件,並在完成時重命名。 另一個將找不到該文件,並將等待文件出現。

你的意思是像一個命名管道? 有可能,但是除非您使用非可移植進程,否則Java不允許創建管道

如果您沒有鎖定基於文件的解決方案,那么數據庫可以解決您的問題。
每條記錄都是寫過程中寫的一行。 記錄中的單個列將保持不變,並且讀取過程將使用它來指示它使記錄變紅。

自然,您必須在表變大或對其進行分區之前先對其進行清理,以便讀取過程很容易在表中查找信息。

如果必須使用一個文件-您可以想到另一個文件,該文件僅具有讀取器進程讀取的記錄的ID這樣,您就不必同時在同一文件上寫入進程。

您正在要求的功能正是JMS的功能。 JMS是具有許多實現的API。 您不僅可以使用輕量級的實現嗎? 我不明白為什么您認為這很“復雜”。 當您准備可靠地實施解決方案時,您會發現處理所有極端情況並不是一件容易的事。

如果我不明白您的問題,請糾正我...

為什么不查看文件鎖? 當程序獲得鎖時,另一個程序等待鎖釋放

暫無
暫無

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

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