Java 设计并编写一个任务计划程序,它可以执行未同步或已同步的任务
这是一个面试问题,这意味着这可以在短时间内完成。 我想在这里问一下,因为我不知道如果有人问我该怎么办 “设计并编写一个可以执行非同步或同步任务的任务计划程序”Java 设计并编写一个任务计划程序,它可以执行未同步或已同步的任务,java,task,synchronized,Java,Task,Synchronized,这是一个面试问题,这意味着这可以在短时间内完成。 我想在这里问一下,因为我不知道如果有人问我该怎么办 “设计并编写一个可以执行非同步或同步任务的任务计划程序” 请发挥您的想象力/假设,并分享您的想法和意见。我会使用Executor服务,因为它内置并完成大部分您想要的事情。它不在乎这些任务是否使用同步。这个问题故意含糊其辞,它是为了表明你在设计和解决问题方面有多么出色,你做了什么样的假设,你如何证明它们,等等。没有一个好的答案。这是一个解决问题的问题 我的看法是: 我的调度程序可以执行任意的Run
请发挥您的想象力/假设,并分享您的想法和意见。我会使用Executor服务,因为它内置并完成大部分您想要的事情。它不在乎这些任务是否使用同步。这个问题故意含糊其辞,它是为了表明你在设计和解决问题方面有多么出色,你做了什么样的假设,你如何证明它们,等等。没有一个好的答案。这是一个解决问题的问题 我的看法是:
Runnable
或Callable
,我将实现它,因为它似乎是一个很好的问题抽象。我正在使用尽可能多的标准类,以使API可移植且易于使用ScheduledExecutorService
封装为一个额外的同步,用于同步任务。我想ConcurrentMap
就可以了。在运行标记为已同步的任务之前,我确保没有其他同一时间的已同步任务正在运行。我阻塞并等待或拒绝(这可以配置)那么,同步任务是什么意思?从CPU调度器的角度来看,问这样一个问题是没有意义的,因为这些是更高级别的同步原语(互斥、条件变量、障碍等)。这是在Google的采访中提出的,从技术上讲,任何调度器都可以处理这两个问题,这取决于编写任务的人来处理更高级别的原语(除非你需要实时或类似的东西)。在我看来,自从我与谷歌面谈以来,谷歌的面试问题变得越来越糟。@JesusRamos-我不同意。这个问题似乎(部分)是旨在了解您如何处理模糊和不明确的需求,并将技术上可行的需求与不可行的需求区分开来。这些都是开发人员从事前沿工作的重要技能。