gpt4 book ai didi

java - 从本地机器上的多个线程通过 RMI 调用线程安全方法是否安全?

转载 作者:行者123 更新时间:2023-11-29 06:52:27 24 4
gpt4 key购买 nike

我有一些方法将通过 RMI 调用远程方法,如下所示:

/**
* Implementation is supposed to be thread safe
*/
public interface Act extends java.rmi.Remote{
String doSome() throws RemoteException;
}

public class SomeClass {
private static final Act stub = (Act) Naming.lookup("/server/stub")

public static void someMethodAccessedByMultipleThreads(){
System.out.println(stub.doSome());
}
}

如果远程方法是线程安全的,那么通过多个线程调用 someMethodAccessedByMultipleThreads 是否安全?

或者是否存在一些 RMI 线程/网络/其他问题?

最佳答案

很难准确地辨别你在说什么,但我会做两个声明。

  1. 远程 stub 是线程安全的。很多年前,我在 [已失效的] RMI 邮件列表上问过这个问题,答案刻在 Bob Scheifler、Ann Wolrath、Peter Jones 或其他作者之一的石碑上,不仅针对 RMI,而且针对整个JDK:除非 Javadoc 另有说明,否则它是线程安全的。

  2. 远程方法实现不是线程安全的。这个断言的来源是远程方法调用规范中的 gnomic 语句,大意是 RMI 不保证客户端线程和服务器端线程之间的任何关联。这其中的神秘含义是您不能假设 RMI 在服务器上是单线程的

要得出的结论是,如果您的远程方法实现是线程安全的,那么从任何客户端中的多个线程或同时从多个客户端调用它也是如此,这与来自RMI的观点。

关于java - 从本地机器上的多个线程通过 RMI 调用线程安全方法是否安全?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43537640/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com