【发布时间】:2015-03-21 20:18:39
【问题描述】:
我想知道是否有一种我可以使用的计时器形式不会暂停我的所有代码Thread.sleep(ms) 不是我需要的,因为它会暂停我的所有代码。
编辑:好的,我想我用错了。这是我的编辑:
有没有办法在不暂停我的 main 方法的情况下测量 Java 中的一定时间?
【问题讨论】:
-
你想做什么???
我想知道是否有一种我可以使用的计时器形式不会暂停我的所有代码Thread.sleep(ms) 不是我需要的,因为它会暂停我的所有代码。
编辑:好的,我想我用错了。这是我的编辑:
有没有办法在不暂停我的 main 方法的情况下测量 Java 中的一定时间?
【问题讨论】:
我喜欢使用Executors 类。它有一个很好的方法是newScheduledThreadPool。它给你一个ScheduledExecutorService 实例,它有很多调度方法。
在这里查看: http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/Executors.html
ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1);
scheduler.schedule(threadToExecute, 10, TimeUnit.SECONDS);
此代码将在 10 秒后启动 threadToExecute thread,而不会暂停您的主线程。
【讨论】:
import java.util.concurrent.TimeUnit;
Thread 的类。请看:docs.oracle.com/javase/tutorial/essential/concurrency
取决于您使用的框架。一种非常通用的方法是启动一个新的Thread,通过 Thread.sleep(ms) 暂停该线程,然后在延迟之后做任何你想做的事情,但由于并发问题,这当然需要一点小心.
【讨论】:
您可能想查看Timer 类。您可以将其附加到线程、安排事件并添加延迟。你可以用这个做的是你可以创建一个线程来沿着你的主线程运行并让它从那里运行。因为它们将位于两个完全不同的线程上,所以您不必担心它们会相互干扰。要运行另一个线程,您可以创建一个扩展 Thread 的类并运行它。然后使用Timer(String name)构造函数为线程创建一个Timer。
【讨论】: