java - 如何控制连接到 RMI 服务器的多个客户端线程

标签 java networking rmi serversocket

窃取自:

http://publib.boulder.ibm.com/infocenter/javasdk/v1r4m2/index.jsp?topic=%2Fcom.ibm.java.doc.diagnostics.142%2Fhtml%2Fid1418.html

“在服务器端,当客户端连接到服务器套接字时,会 fork 一个新线程来处理传入的调用。”

那么我怎样才能控制这些客户端线程,以便我可以让我的客户端 1 等待客户端 2 出现,然后执行它们需要执行的任何操作?

谢谢。

最佳答案

我同意@EJP 的观点,认为这是一个非常奇怪的要求。我将提供的解决方案应该可行,但通常是您绝对不想做的事情,因为它会阻塞线程,导致可用性和可扩展性不佳。

您可以使用 CountDownLatch 来实现此目的

将静态CountDownLatch设置为1

public class RmiEndPoint{
    static CountDownLatch startSignal = new CountDownLatch(1);

客户端2倒计时

    public void executedByClient2(){
        SharedLock.countDown();
    }

客户端 1 正在等待

    public void executedByClient1(){
        SharedLock.await();
        // do whatever you want to do
    }
}

在实际代码中,您肯定希望有一些超时,这样如果 client2 没有出现,您的应用程序就不会永远挂起

关于java - 如何控制连接到 RMI 服务器的多个客户端线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20439603/

相关文章:

通过 SSH v2 协议(protocol)的 java RMI

linux - 将数据包注入(inject) linux 内核以模拟以太网数据包到达的最佳方法

ios - Swift 3 Alamofire 分段上传

java - 从位于另一个类中的 JButton 的 actionPerformed 更改 JTextArea 文本

java - 如何让Scanner正确读取转义字符?

c - linux usb连接/断开事件

Java RMI : Sniffer needed

java - 使用 RMI 访问对象

java - 如何在运行时获取变量名?

java - 如何使用 JTable 从选定的数据填充新的二维数组