java - 如何每秒唤醒一个线程,Java

标签 java

我正在尝试启动一个需要每秒执行一个任务的线程。 所以我从现在开始做的是在这段代码上循环:

// execute my task
..

lastScan.setTime(lastScan.getTime() + 1000);
long timeToSleep = (lastScan.getTime() - new Date().getTime());
try {
    Thread.sleep(timeToSleep);
} catch (InterruptedException e) {
    e.printStackTrace();
}

这行得通,但我想知道是否有更优雅、更安全的东西,例如当当前日期达到给定时间时唤醒我的线程的函数。

提前感谢您的建议。

最佳答案

尝试使用 ScheduledExecutorService :

ScheduledExecutorService es = Executors.newScheduledThreadPool(10); //number of threads

从那里开始,该类有不同的方法来传递 Runnable 对象,您可以在单独的线程中按定时延迟运行这些对象

关于java - 如何每秒唤醒一个线程,Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23085320/

相关文章:

java - 如何在 servlet 应用程序中更改用户的 tomcat 密码?

java - 比较两个文件并在 Java 中打印差异

java - 为apache QPID创建 keystore 和信任库

java - lwjgl isKeyDown 取消其他键

java - jsf 2.0 bean extends another bean Target Unreachable, 'null' returned null

java - 如何从 Java 中的字符串格式数字中获取实际值?

java - HTTP 传输编码 "gzip, chunked"未正确解释

java - 如何在java中查找操作系统上次更新的时间

Java 基本类型 XML 文本值

java - 覆盖 System.out.println