在 java 中实现 `sleep()` 和 `awake()`

Implement the `sleep()` and `awake()` in java

我需要开发 OS 的 sleep()awake() 功能。 我有 运行ningJobs 队列和 sleepingJobs 队列。 sleep 方法应该接收一个 Job 并将其插入睡眠队列中正确的位置,并且 awake() 方法应该将准备好 运行 的睡眠作业移动到 运行ningJobs排队。

  1. 不确定如何实现我的队列 - 我应该使用 PriorityQueue / LinkedList 队列吗?
  2. 订购我的列表/在我的队列中找到合适的工作的最有效方法是什么?
  3. awake() 方法如何在无法访问当前时间的情况下知道时间
  1. 任一选项(链接 list/priority 队列)都可以。这个决定取决于你想要什么结果。

链表是一个“先进先出”的队列。第一个睡觉的工作是 运行 最长的工作。最先醒来的工作是睡得最久的工作。

优先级队列让你有不同的执行优先级:最低优先级的进程先休眠,最高优先级的进程先唤醒。

  1. 不要在外部重新排序队列,相信数据结构会自己做。

  2. 大概您的 os 模拟器有自己的时钟,您可以使用它来代替真实世界的时钟时间。