Является ли Java MulticastSocket потокобезопасным? - PullRequest
6 голосов
/ 24 июня 2010

У меня есть две темы. Первый отправляет датаграммы с MulticastSocket в цикле; второй поток получает дейтаграммы, используя тот же экземпляр MulticastSocket в цикле.

Кажется, он работает правильно, но я все еще сомневаюсь.

Могут ли эти два потока использовать один и тот же экземпляр MulticastSocket? Является ли MulticastSocket потокобезопасным в отношении вызова методов отправки / получения?

Ответы [ 2 ]

6 голосов
/ 24 июня 2010

Методы отправки и получения DatagramSocket синхронизируются в отправляющем / принимающем пакете дейтаграммы.Другими словами, если вы используете один и тот же пакет дейтаграмм для отправки и получения из двух разных потоков, эти два метода будут синхронизированы, поскольку они будут использовать один и тот же объект в качестве токена синхронизации.однажды посмотрел на исходный код DatagramSocket .

2 голосов
/ 24 июня 2010

DatagramSocket является поточно-ориентированным , MulticastSocket является производным классом, следовательно, MulticastSocket.send является поточно-ориентированным, поскольку доступ сериализуется синхронизированным блоком .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...