被告知不允许在循环中使用 thread.sleep(),但我需要使用它,因为我正在调用每秒有限制的套接字。
还有其他方法吗?
for (int i=0; i < 100; i++) {
try {
Thread.sleep(300);
} catch (InterruptedException ex) {
Logger.getLogger(bulkWhoIsCommand.class.getName()).log(
Level.SEVERE, null, ex);
}
}
最佳答案
您可以使用 BlockingQueue
的 poll
方法:
private final BlockingQueue<Void> pause = new ArrayBlockingQueue<Void>(1);
public void test() throws InterruptedException {
pause.poll(100 * 300, TimeUnit.MILLISECONDS);
}
这种技术的奇妙之处在于,如果您决定这样做,您可以在队列中插入一些内容来中止暂停。
关于java - 循环中的 Thread.sleep 不起作用,有其他选择吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23900494/