我是RMI世界的新手。我有一个服务器和多个客户端。服务器在main中公开一个且只有一个对象。这个漂亮的对象有很多方法(服务于客户端),并且所有客户端都使用相同的服务(访问相同的服务)。我想更新我当前的项目以使用线程。我不知道究竟应该由Runnable
取代什么。我认为我可能将服务器公开的单个对象设为Runnable
。但我想知道在这种情况下客户端如何与对象进行交互。
请参阅我知道的任何参考资料。
我不想要任何代码,但是如果有一个项目面临同样的问题,那么您就可以与我分享。我需要你的想法来设计我的解决方案。 提前谢谢。
答案 0 :(得分:3)
我想更新当前项目以使用线程。
您的项目已使用线程。 RMI是多线程的。两个客户端可以并且将同时在远程对象上执行方法。您可以通过使用具有非线程安全数据结构的同步或信号量来在适当的位置阻止。
我不知道Runnable究竟应该替换什么。我认为我可能将服务器公开的单个对象作为Runnable。但我想知道在这种情况下客户端如何与对象进行交互。
您不需要实施Runnable
或其他任何内容。 RMI中的多线程已经在您当前的代码中发生。您需要注意的不是多线程,而是代码的线程安全。
请向我推荐您熟悉此主题的任何参考文献。
请参阅RMI Specification, #3.2。那里使用的语言有时会让人感到困惑,但这意味着你不能认为RMI是单线程的。