在 java 中实现 `sleep()` 和 `awake()`
Implement the `sleep()` and `awake()` in java
我需要开发 OS 的 sleep()
和 awake()
功能。
我有 运行ningJobs 队列和 sleepingJobs 队列。 sleep 方法应该接收一个 Job 并将其插入睡眠队列中正确的位置,并且 awake()
方法应该将准备好 运行 的睡眠作业移动到 运行ningJobs排队。
- 不确定如何实现我的队列 - 我应该使用 PriorityQueue / LinkedList 队列吗?
- 订购我的列表/在我的队列中找到合适的工作的最有效方法是什么?
awake()
方法如何在无法访问当前时间的情况下知道时间
- 任一选项(链接 list/priority 队列)都可以。这个决定取决于你想要什么结果。
链表是一个“先进先出”的队列。第一个睡觉的工作是 运行 最长的工作。最先醒来的工作是睡得最久的工作。
优先级队列让你有不同的执行优先级:最低优先级的进程先休眠,最高优先级的进程先唤醒。
不要在外部重新排序队列,相信数据结构会自己做。
大概您的 os 模拟器有自己的时钟,您可以使用它来代替真实世界的时钟时间。
我需要开发 OS 的 sleep()
和 awake()
功能。
我有 运行ningJobs 队列和 sleepingJobs 队列。 sleep 方法应该接收一个 Job 并将其插入睡眠队列中正确的位置,并且 awake()
方法应该将准备好 运行 的睡眠作业移动到 运行ningJobs排队。
- 不确定如何实现我的队列 - 我应该使用 PriorityQueue / LinkedList 队列吗?
- 订购我的列表/在我的队列中找到合适的工作的最有效方法是什么?
awake()
方法如何在无法访问当前时间的情况下知道时间
- 任一选项(链接 list/priority 队列)都可以。这个决定取决于你想要什么结果。
链表是一个“先进先出”的队列。第一个睡觉的工作是 运行 最长的工作。最先醒来的工作是睡得最久的工作。
优先级队列让你有不同的执行优先级:最低优先级的进程先休眠,最高优先级的进程先唤醒。
不要在外部重新排序队列,相信数据结构会自己做。
大概您的 os 模拟器有自己的时钟,您可以使用它来代替真实世界的时钟时间。