【问题标题】:Alternative solution to sockets in JavaJava中套接字的替代解决方案
【发布时间】:2013-08-25 19:12:24
【问题描述】:

我在两台机器之间用 java 制作了一个应用程序,每台机器都对一些数据进行一些计算,然后发送给另一台机器来完成它的工作。我设法使用套接字来做到这一点。因此,两台机器都根据它们运行的​​代码部分来播放服务器和客户端。但是,它需要大量同步,以便已经有要计算的数据,到目前为止,我设法用Thread.sleep(); 做到了这一点,但由于我为睡眠时间留出了很大的余地,因此会导致大量空闲时间. 我想知道是否有任何替代方法可以自动同步。

【问题讨论】:

  • 您考虑过使用 RMI 吗?
  • 使用它有什么好处?
  • RMI 相对于套接字的主要优点是易于使用。您使用 OO 范例来设计您的系统。同步相当简单,因为您可以使用 Java 的内置监视器。在任何情况下,使用 Thread.sleep 作为同步工具都不是一个好主意。它不能被证明是安全的。如果您可以添加有关您的应用程序的更多详细信息,我可能会更好地解释。如果您只需要两台机器轮流操作数据,则将一台作为客户端,另一台作为服务器。客户端完成它的工作,调用服务器,服务器完成它的工作并返回,等等。
  • Thread.sleep() 是错误的同步方法。只需在阻塞模式下读取套接字,直到读取到足够的数据,然后处理它们或传递给另一个线程处理。

标签: java sockets synchronization client-server thread-sleep


【解决方案1】:

有一个名为 apache MINA 的 java 框架,它抽象了纯套接字的复杂性和限制。您可以在此处找到更多详细信息:http://mina.apache.org/

【讨论】:

    猜你喜欢
    • 2021-06-06
    • 2011-04-13
    • 2016-10-24
    • 1970-01-01
    • 2020-08-29
    • 2018-02-07
    • 2014-12-26
    • 2021-02-01
    • 2016-04-30
    相关资源
    最近更新 更多