【发布时间】:2015-04-29 07:25:59
【问题描述】:
我一直在经历一些关于在特定时间间隔后做某事的 SO 问题(例如每五秒打印一次 hello world)。
我看到了我们可以在 Java 程序中执行此操作的不同方法。我的问题是java如何在内部做到这一点。
一旦我们运行一个java程序,main函数就开始在一个线程中执行。但是这个线程可以随时被发送到 Runnable 状态(暂停执行)。所以如果我在main函数中声明了print语句,那么java现在是如何记录时间的。如果java程序在接下来的五秒内没有恢复怎么办?
一种可行的方法是,如果我们的意思是“java 程序运行的时间段内每 5 秒”。 JVM 就是这么干的吗?
假设我有一个处理器。
【问题讨论】:
-
它要求操作系统在 5 秒后唤醒它。
-
行为有保障吗?操作系统肯定会在 5 秒后唤醒它吗?
-
不,操作系统不能保证在五秒后唤醒您的进程或线程。唯一真正提供这种保证的操作系统是硬实时操作系统:es。即使是软 RT 也不能保证您在五秒后完全醒来。
-
所以我在程序中所说的 5 秒,可能不是 5 秒的实际时间?
标签: java multithreading time