考虑一个接受需要很长时间初始化的服务的配置设置的用户界面(例如,JDBC 连接的参数)。我们希望我们的用户界面在服务初始化发生时保持响应。如果用户进行其他更改,则应取消初始化并使用新参数重新启动。
因为在用户键入每个字符时参数都包含在配置中,因此可能会连续创建多个初始化请求。只有最后一个应该被执行。
我们已经编写了实现此结果的代码,但似乎这种行为非常适合作为 ExecutorService 实现。在我们将所有内容重构为 ExecutorService 之前,我想我会问世界上是否已经存在类似的实现。
更具体:
ExecutorService 将有一个工作线程。一旦提交了新任务,当前任务就会被取消(并且工作人员会中断)。然后捕获新任务以供下一次执行。如果提交了另一个任务,则再次取消当前任务,并将“下一次执行”任务设置为这个新任务。当工作线程最终选择下一个任务执行时,它始终是最后一个提交的任务——所有其他任务要么被取消,要么被丢弃。
有没有人愿意分享这样的实现?或者是否有一个涵盖这种行为的标准库?实现起来并不难,但是确定线程安全可能会很棘手,所以如果可以的话,我宁愿使用经过验证的代码。