【问题标题】:Is MulticastSocket.send() reentrant?MulticastSocket.send() 是可重入的吗?
【发布时间】:2015-08-13 10:05:35
【问题描述】:

我有 2 个线程要调用:

multicastSocket.send(dP1)

multicastSocket.send(dP2)

其中dP1dP2分别是不同的DatagramPacket对象,multicastSocket是MulticastSocket的共享实例。

我不明白如果线程在同一时刻调用send() 是否会在multicastSocket, 上发生并发问题。

【问题讨论】:

  • Alex,看你链接的问题的底部,据说send不是同步方法。那么并发问题最终可能会发生吗?不过我想这不是一个重复的问题。
  • 编辑:标题现在说明问题的真正含义

标签: java send multicastsocket


【解决方案1】:
  • DatagramSocket 的读取和写入是相互独立的。
  • DatagramSocket 写入是原子的,因此它们是线程安全的。
  • DatagramSocket 读取由 Java 同步,它们也是 在操作系统级别是原子的,因此它们再次是线程安全的。
  • MulticastSocket 从 DatagramSocket 继承这些方法,因此同样适用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-01-03
    • 2011-04-21
    • 1970-01-01
    • 1970-01-01
    • 2013-06-24
    • 1970-01-01
    • 1970-01-01
    • 2011-07-11
    相关资源
    最近更新 更多