我正在编写一个简单的练习应用程序,我想每 N 分钟显示一条消息,然后 hibernate 一段时间。
我的问题:设计具有此功能的应用程序的最有效方法是什么:睡一会儿,然后醒来做点什么。我是一名学生,在学校我们使用线程编写应用程序,在编写基本内核后,我了解了调度和时间切片的一些基础知识。
我的目标是更好地理解如何编写一个占用空间非常小的小程序(以及如何在这个小示例中达到如此小的占用空间),但可以运行数周。
- 我可以在 Java 中使用 Thread.sleep(N) 或等效方法。但这并不能保证 sleep 的精确度,事实上(根据我读到的),可能不会睡近 N 秒。类似this的文章似乎不鼓励 sleep()。
- 我考虑过创建一个线程,我可以发出信号以每 N 秒唤醒它。但随后 main() 线程将不断工作并计算时间。这也非常浪费,因为我会在计算时间上浪费周期。
我想理想情况下我希望进程不要运行 N 分钟,然后在一定数量的时间片后唤醒(由操作系统),但我不确定除了 sleep() 之外还有其他方法可以做到这一点。我正在用 Java 编写它,但如果 C 或 Python 可以做得更好,我可以使用它们(我觉得这不重要)。我仍在研究,但我想我也会从社区得到提示。
该程序是一个简单的提醒,告诉我拉伸(stretch) body 并使用站立式办公 table 。 :) 真正的目标是更好地理解线程。
最佳答案
围绕 Thread.sleep 的评论实际上比您的用例所需要的更精确,IMO。 Thread.sleep 应该足够精确以满足您的需求。你可以看看ScheduledThreadPoolExecutor这使您摆脱了一些具体的线程管理,随着程序复杂性的增加,这很容易出错。
关于java - sleep 应用设计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35442803/