【问题标题】:Java - Different socket for same TCP IPJava - 相同 TCP IP 的不同套接字
【发布时间】:2012-08-15 16:15:27
【问题描述】:

我想通过使用套接字为读写方法创建不同的线程。 我想知道我应该使用不同的套接字还是相同的套接字来共享两个线程?

【问题讨论】:

  • 我所做的是打开 1 个套接字。只有 1 个线程监听,我还添加了一个同步的“发送”方法,任何线程都可以使用它

标签: java thread-safety socket.io


【解决方案1】:

如果你在同一个设备/对象上读写,我会使用同一个线程。这样一来,当您还没有写入内容时,它就不会试图读取它。如果您不小心,执行多个线程可能会导致大量错误,例如空值。

【讨论】:

    【解决方案2】:

    您可以使用同一个套接字进行读写。当然,两个端点之一必须打开一个服务器套接字。然后你可以让 1 个线程阻塞等待输入数据,而另一个线程可以在需要时输出数据

    【讨论】:

      【解决方案3】:

      1. 创建一个套接字对象

      2. 使用任意数量的线程来访问此对象,但请注意确保 读写操作 Thread-Safe.

      3.尝试使用java.util.nio包中的ServerChannelServerSocketChannel,这是异步

      【讨论】:

      • NIO 不是异步的。它可以是非阻塞的。不是一回事。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-19
      • 2010-09-15
      • 2012-08-23
      • 1970-01-01
      相关资源
      最近更新 更多