在执行任何读/写操作之前,我有一个线程忙于循环,直到我的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()
在busy-loop中使用过让其他线程在这个线程循环时运行(如果有的话),但是javadocThread.yield()
说
很少使用这种方法。它对于调试或测试目的可能很有用,它可能有助于重现由于竞争条件导致的错误。
现在,我这里没有竞争条件,我只需要等到套接字被绑定,并且由于套接字被绑定时没有回调,所以我坚持使用这种方法。有什么建议吗?