MulticastSocket.send() 是可重入的吗?
Is MulticastSocket.send() reentrant?
我有 2 个线程要调用:
multicastSocket.send(dP1)
和
multicastSocket.send(dP2)
分别是,其中dP1
和dP2
是不同的DatagramPacket
对象,multicastSocket
是MulticastSocket的共享实例
我不明白如果线程同时调用 send()
是否会在 multicastSocket,
上发生并发问题。
- DatagramSocket读写相互独立
- DatagramSocket 写入是原子的,因此它们是线程安全的。
- DatagramSocket 读取由 Java 同步,它们也是
OS 级别的原子,因此它们也是线程安全的。
- MulticastSocket 继承了 DatagramSocket 的这些方法,所以同样适用于它。
我有 2 个线程要调用:
multicastSocket.send(dP1)
和
multicastSocket.send(dP2)
分别是,其中dP1
和dP2
是不同的DatagramPacket
对象,multicastSocket
是MulticastSocket的共享实例
我不明白如果线程同时调用 send()
是否会在 multicastSocket,
上发生并发问题。
- DatagramSocket读写相互独立
- DatagramSocket 写入是原子的,因此它们是线程安全的。
- DatagramSocket 读取由 Java 同步,它们也是 OS 级别的原子,因此它们也是线程安全的。
- MulticastSocket 继承了 DatagramSocket 的这些方法,所以同样适用于它。