Использование Thread.yield() при зацикливании - плохая практика?
У меня зацикливается поток, пока я
ServerSocket
объект привязывается к порту перед выполнением любой операции чтения / записи.
new Thread(() -> {
while (!server.isBound()) {
Thread.yield(); // hmm ... any better alternative????
}
while (!server.isClosed()) {
// do stuff regarding server and clients
}
}, "Server Connection Accept Thread").start();
Я использовал
Thread.yield()
в цикле занятости, чтобы позволить другим потокам работать (если они есть), пока этот поток зацикливается, но javadoc для
Thread.yield()
говорит
Этот метод редко бывает уместным. Это может быть полезно для целей отладки или тестирования, где может помочь воспроизвести ошибки из-за состояния гонки.
Теперь у меня нет условия гонки, мне просто нужно подождать, пока сокет не будет привязан, и, поскольку при привязке сокета нет обратного вызова, я придерживаюсь этого подхода. Любой совет?