我的應用程序可能有問題。有一個客戶端運行多個線程,可能會通過Java RMI執行對服務器的非常耗時的調用。當然,來自一個客戶的時間消耗呼叫不應該阻止其他人。
我測試過了,它可以在我的機器上運行。所以我在客戶端創建了兩個線程,並在服務器上創建了一個虛擬調用。啓動時,客戶端都會調用只包含大量sysout的虛擬方法。可以看出,這些調用是並行處理的,沒有阻塞。
我很滿意,直到一位同事指出RMI規範不一定能保證這種行爲。
而真正的蘭開斯特大學的HP文本指出關於線程使用的Java RMI規範:「..可能或不可以在單獨的線程中執行」
「由RMI運行時調度到遠程對象 實現(服務器)的方法可能會或可能不會在一個單獨的線程中執行。 來自不同客戶端的呼叫虛擬機將在不同的線程中執行 。從同一臺客戶機它不 保證每個方法將在一個單獨的線程中運行」 [1]
我能做些什麼呢?它有可能在實踐中不起作用嗎?