3

这是一个面试问题,这意味着这可以在很短的时间内完成。我想在这里问,因为如果被问到我不知道该怎么办。

“设计和编写一个可以执行非同步或同步任务的任务调度程序”

请发挥您的想象力/假设并分享您的想法和评论。

4

2 回答 2

6

这个问题是故意含糊不清的,它应该表明你在设计和解决问题方面有多好,你做了什么样的假设,你如何证明它们的合理性等等。没有一个好的答案。这是一个接近问题的问题。

这就是我的看法:

  1. 我的调度器可以任意取RunnableCallable<V>,我将实现ScheduledExecutorService,因为它似乎是解决问题的一个很好的抽象。我正在使用尽可能多的标准类来使 API 可移植且易于使用。

  2. 通过同步和同步我理解:安全运行并发和那些需要排他锁。即调度器不允许同时运行两个同步的任务。

  3. 同步任务和非同步任务之间的区别将使用标记界面进行。注释也很好,但在运行时更难提取。

  4. 我不会给你完整的实现,但它可能会包含一些标准ScheduledExecutorService,并为同步任务提供额外的同步。我想ConcurrentMap<Class, Semaphore>会的。在运行标记为同步的任务之前,我确保没有同时运行其他同步任务。我阻止并等待或拒绝(这可以配置)。

于 2013-02-04T22:45:11.083 回答
0

我会使用 ExecutorService,因为它是内置的,并且可以执行您想要的大部分操作。它不关心这些任务是否使用同步。

于 2013-02-04T22:44:26.560 回答