繁体   English   中英

设计和编写可以执行不同步或同步任务的任务调度程序

[英]Design and code a task scheduler that can take unsynchronized or synchronized tasks

这是一个面试问题,这意味着可以在短时间内完成。 我想在这里问一下,因为如果有人问我,我无法弄明白该怎么办。

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

请用你的想象力/假设分享你的想法和评论。

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

这里说的是我的看法:

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

  2. 通过 同步同步我理解:安全地同时运行和那些需要独占锁定。 即,不允许调度程序同时运行两个同步的任务。

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

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

我会使用内置的ExecutorService并执行您想要的大部分操作。 它不关心这些任务是否使用synchronized。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM