我有一个 Quartz Scheduler,每小时调用一次我的 configUpdate 方法。但是,此方法也可以通过控制器中的 REST API 调用来调用。由于此方法复杂且异步,因此我想确保它永远不会并发运行,无论它是由调度程序还是 REST 调用触发。
我有哪些选择可以实现这一目标?
我有一个 Quartz Scheduler,每小时调用一次我的 configUpdate 方法。但是,此方法也可以通过控制器中的 REST API 调用来调用。由于此方法复杂且异步,因此我想确保它永远不会并发运行,无论它是由调度程序还是 REST 调用触发。
我有哪些选择可以实现这一目标?
您需要锁定您的方法,以便每次只有一个线程可以访问它。
如果您的应用程序作为单个实例运行,那么您可以“同步”您的方法或使用 java.concurrent 库。
否则,您需要将它与Shedlock或 Quartz 之类的东西结合使用。