【发布时间】:2013-08-25 19:12:24
【问题描述】:
我在两台机器之间用 java 制作了一个应用程序,每台机器都对一些数据进行一些计算,然后发送给另一台机器来完成它的工作。我设法使用套接字来做到这一点。因此,两台机器都根据它们运行的代码部分来播放服务器和客户端。但是,它需要大量同步,以便已经有要计算的数据,到目前为止,我设法用Thread.sleep(); 做到了这一点,但由于我为睡眠时间留出了很大的余地,因此会导致大量空闲时间.
我想知道是否有任何替代方法可以自动同步。
【问题讨论】:
-
您考虑过使用 RMI 吗?
-
使用它有什么好处?
-
RMI 相对于套接字的主要优点是易于使用。您使用 OO 范例来设计您的系统。同步相当简单,因为您可以使用 Java 的内置监视器。在任何情况下,使用 Thread.sleep 作为同步工具都不是一个好主意。它不能被证明是安全的。如果您可以添加有关您的应用程序的更多详细信息,我可能会更好地解释。如果您只需要两台机器轮流操作数据,则将一台作为客户端,另一台作为服务器。客户端完成它的工作,调用服务器,服务器完成它的工作并返回,等等。
-
Thread.sleep() 是错误的同步方法。只需在阻塞模式下读取套接字,直到读取到足够的数据,然后处理它们或传递给另一个线程处理。
标签: java sockets synchronization client-server thread-sleep