【发布时间】:2015-06-18 05:56:17
【问题描述】:
以下是来自网上的面试题:
设计一个任务调度系统,包括一个任务队列和两个函数。
(1) 功能:触发任务。这个负责调用任务队列中的所有任务。
(2) 功能:添加任务。在调用 triggerTask 函数之前, addTask 将任务添加到队列中。调用 triggerTask 函数后,addTask 只是调用任务。
以下是我的回答:
class TriggerTask {
Queue<Task> q;
boolean triggered = false;
addTask(Task t) {
if (triggered == true) {
t.invoke();
}
else {
q.offer(t);
}
}
triggerTask() {
triggered = true;
while (!q.isEmpty()) {
q.poll().invoke();
}
}
接下来的问题是,如果您希望您的设计在多线程情况下运行,该怎么办?我有点失去它。以上代码在多线程情况下运行有问题吗?如果是,如何解决?
【问题讨论】:
标签: java multithreading synchronization