我有一个应用程序,它使用类似 cron 的作业来更新一组数据。更新过程每分钟发生一次,不会持续很长时间。servlet 将这个数据集公开给用户。我的问题是在更新过程中,servlet 请求应该阻塞并等待该过程完成。
归根结底,我有这两个功能:
private void updateData() {
}
public List getData() {
}
第一个函数每分钟运行一次。第二个可以同时调用任意多次。当 updateData 运行时,所有对 getData 的调用都必须等待它完成。一次 getData 调用不应阻止对同一函数的后续调用。updateData 函数的优先级高于getData,即updateData 运行时,必须等待所有getData 调用完成,但不允许开始新的调用。
对于这种情况,我应该使用什么同步机制?我正在使用 Java 服务器,但我很想知道其他平台也存在哪些解决方案。