[英]“java.rmi.ConnectException: Connection refused to host” when exporting an object client-side
[英]Java RMI threads on client-side are executing sequentially or concurrently when calling the same remote object?
我在理解Java RMI的特定方面時遇到麻煩。
有一個客戶端創建了N個線程,這些線程在RMIregistry上進行查找:
Registry rmiRegistry;
try {
rmiRegistry = LocateRegistry.getRegistry(8585);
IGestoreSportello igs = (IGestoreSportello)rmiRegistry.lookup("gestoresportelli");
ExecutorService s = Executors.newCachedThreadPool();
for(int i = 0; i < T; i++){
s.execute(new threadRunner(igs));
}
先前在服務器中將“ gestoresportelli”注冊為服務的位置。
因此,據我所知,客戶端對SAME對象的引用都相同。
我要問的是,當我在此對象上調用方法時,是CLIENT執行服務器代碼嗎?
還是服務器依次調用該對象上的方法?
因此,假設我們有:
線程1,線程2,線程3。 它們都在服務器上注冊的同一遠程對象上調用相同的方法。
他們是否按順序調用它:
Thread1->RemoteObjectReference.doSomething();
wait thread 1 to finish...
Thread2->RemoteObjectReference.doSomething();
wait thread 2 to finish...
Thread3->RemoteObjectReference.doSomething();
或同時:
Thread1->RemoteObjectReference.doSomething();
Thread2->RemoteObjectReference.doSomething();
Thread3->RemoteObjectReference.doSomething();
都在同一時間,即使是同一遠程對象?
我希望我足夠清楚。 謝謝!
我要問的是,當我在此對象上調用方法時,是CLIENT執行服務器代碼嗎?
沒有。
還是服務器依次調用該對象上的方法?
它是服務器,但是順序沒有定義。
他們會順序調用嗎
沒有定義。
或同時:
沒有定義。
更明確地說,RMI規范特別聲明不保證有關客戶端線程和服務器線程之間的關聯。
您可以從中得出的所有結論是,您不能假定它是單線程的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.