gpt4 book ai didi

java - 如何在java中暂停一个线程?

转载 作者:行者123 更新时间:2023-11-29 09:36:12 25 4
gpt4 key购买 nike

考虑以下代码:

while(true) { someFunction(); Thread.sleep(1000); }

我想要的是,每 10 秒调用一次 someFunction()。但这种情况并非如此。它每秒被调用一次。我尝试了 Thread.wait(1000),但即使那样也无济于事。我删除了 while 部分,只保留了主体,最后写道:

Thread.start();

但是它抛出了一个异常。还有其他解决方案吗?

最佳答案

它每秒被调用一次,因为你睡了 1000 毫秒,也就是 1 秒。

将其更改为 Thread.sleep(10000),这对您来说会更好。

或者,使用

Thread.sleep(TimeUnit.SECONDS.toMillis(10));

这意味着您不必自己进行算术运算。 (许多 API 现在都采用数量和 TimeUnit,但不幸的是,Thread.sleep 似乎没有类似的东西。)

请注意,这将使线程无响应 10 秒,并且没有明确的方式告诉它唤醒(例如,因为你想关闭它)。我通常更喜欢使用 wait(),这样我就可以从不同的线程向同一个监视器发出脉冲,以指示“我要你现在醒来!”这通常来自表单的 while 循环

while (!shouldStop())

编辑:tvanfosson 使用 Timer 的解决方案也不错 - 另一种选择是使用 ScheduledExecutorService这可以更灵活一点(也更容易测试)。

关于java - 如何在java中暂停一个线程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2537694/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com