私は2つのスレッドを持っています。最初のものはループ内の MulticastSocket でデータグラムを送信します。2 番目のスレッドは、ループ内の MulticastSocket の同じインスタンスを使用してデータグラムを受信します。
正常に動作しているように見えますが、まだ疑問があります。
これら 2 つのスレッドは、MulticastSocket の同じインスタンスを使用できますか? 送信/受信メソッドの呼び出しに関して、MulticastSocket はスレッドセーフですか?
私は2つのスレッドを持っています。最初のものはループ内の MulticastSocket でデータグラムを送信します。2 番目のスレッドは、ループ内の MulticastSocket の同じインスタンスを使用してデータグラムを受信します。
正常に動作しているように見えますが、まだ疑問があります。
これら 2 つのスレッドは、MulticastSocket の同じインスタンスを使用できますか? 送信/受信メソッドの呼び出しに関して、MulticastSocket はスレッドセーフですか?
送信と受信の両方の DatagramSocket メソッドは、送受信データグラム パケットで同期されます。つまり、同じデータグラム パケットを使用して 2 つの異なるスレッドから送受信する場合、これら 2 つのメソッドは同期トークンとして同じオブジェクトを使用するため、同期されます。
DatagramSocketのソースコードを見ると、はるかに理解しやすくなります。
DatagramSocket
アクセスは同期されたブロックによってシリアル化されているため、スレッドセーフでMulticastSocket
あり、派生クラスであり、結果としてスレッドセーフです。MulticastSocket.send