[英]Design and code a task scheduler that can take unsynchronized or synchronized tasks
这是一个面试问题,这意味着可以在短时间内完成。 我想在这里问一下,因为如果有人问我,我无法弄明白该怎么办。
“设计和编写可以执行不同步或同步任务的任务调度程序”
请用你的想象力/假设分享你的想法和评论。
这个问题是故意模糊的,它假设你表现出你在设计和解决问题方面有多好,你做出了什么样的假设,你如何证明它们的合理性等等。没有单一的,好的答案。 这是一个解决问题的问题。
这里说的是我的看法:
我的调度程序可以采用任意的Runnable
或Callable<V>
,我将实现ScheduledExecutorService
因为它似乎是一个很好的抽象问题。 我正在使用尽可能多的标准类来使API易于使用且易于使用。
通过非 同步和同步我理解:安全地同时运行和那些需要独占锁定。 即,不允许调度程序同时运行两个同步的任务。
将使用标记接口进行同步和非同步任务之间的区别。 注释也很好,但在运行时更难提取。
我不会给你完整的实现,但它可能会包含一些标准的ScheduledExecutorService
并为同步任务提供额外的同步。 我认为ConcurrentMap<Class, Semaphore>
会这样做。 在运行标记为已同步的任务之前,请确保没有同时运行的其他同步任务。 我阻止并等待或拒绝(这可以是可配置的)。
我会使用内置的ExecutorService并执行您想要的大部分操作。 它不关心这些任务是否使用synchronized。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.