У меня есть интеграционный тест, который должен координировать два DatagramSockets , каждый из которых работает в своем собственном потоке. Один сокет ожидает чтения данных с помощью блокирующего вызова метода receive (). Другой сокет должен вызвать send (), но это должно произойти после того, как receive () заблокирован, иначе данные будут потеряны.
Код выглядит примерно так:
Приемник
byte[] buf = new byte[1024];
new DatagramSocket(7654).receive(new DatagramPacket(buf, buf.length));
Sender
new DatagramSocket(7654).send(
new DatagramPacket("hello".getBytes(Charset.forName("UTF-8")), 5));
Я не хочу помещать Thread.sleep () перед вызовом send (), хотя этого, вероятно, будет достаточно, чтобы получатель мог блокироваться. Есть ли элегантный способ сделать это?