java - 循环中的 Thread.sleep 不起作用,有其他选择吗?

标签 java multithreading sleep

被告知不允许在循环中使用 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);
    }
}

最佳答案

您可以使用 BlockingQueuepoll 方法:

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/

相关文章:

java - OpenAI ChatGPT (GPT-3.5) API 错误 400 : "Unexpected response code 400 for https://api.openai.com/v1/completions" (migrating GPT-3 to GPT-3. 5 API)

java - Android:我怎么知道CSS注入(inject)完成了?

java - 处理现实世界中银行交易的并发请求

C++ 意外的多线程行为

C++:GetAsyncKeyState() 不会立即注册按键

java - JAVA 中字符串转公钥

java - 类和子类的处理方式是否相同?

java - 使用BlockingQueue时的线程同步

c - 如何让线程休眠/阻塞纳秒(或至少毫秒)?

ruby - 如何让 Ruby 每 10 分钟运行一次任务?