这是一个面试问题,这意味着这可以在很短的时间内完成。我想在这里问,因为如果被问到我不知道该怎么办。
“设计和编写一个可以执行非同步或同步任务的任务调度程序”
请发挥您的想象力/假设并分享您的想法和评论。
这是一个面试问题,这意味着这可以在很短的时间内完成。我想在这里问,因为如果被问到我不知道该怎么办。
“设计和编写一个可以执行非同步或同步任务的任务调度程序”
请发挥您的想象力/假设并分享您的想法和评论。
这个问题是故意含糊不清的,它应该表明你在设计和解决问题方面有多好,你做了什么样的假设,你如何证明它们的合理性等等。没有一个好的答案。这是一个接近问题的问题。
这就是我的看法:
我的调度器可以任意取Runnable
或Callable<V>
,我将实现ScheduledExecutorService
,因为它似乎是解决问题的一个很好的抽象。我正在使用尽可能多的标准类来使 API 可移植且易于使用。
通过非同步和同步我理解:安全运行并发和那些需要排他锁。即调度器不允许同时运行两个同步的任务。
同步任务和非同步任务之间的区别将使用标记界面进行。注释也很好,但在运行时更难提取。
我不会给你完整的实现,但它可能会包含一些标准ScheduledExecutorService
,并为同步任务提供额外的同步。我想ConcurrentMap<Class, Semaphore>
会的。在运行标记为同步的任务之前,我确保没有同时运行其他同步任务。我阻止并等待或拒绝(这可以配置)。
我会使用 ExecutorService,因为它是内置的,并且可以执行您想要的大部分操作。它不关心这些任务是否使用同步。