如何只允许一个活动的@Async任务?

问题描述 投票:0回答:2

我有一个接收文件的方法,然后该文件被处理。但处理需要很长时间,所以我想在后台执行此操作,并告诉用户现在将处理该文件。但我的要求是只有当之前的调用完成后才能调用此任务。因此用户应该收到一个错误,他必须等待。

我知道我可以对处理进行排队,但我想保持简单。

那么我该怎么做呢?是否有某种方法可以请求此任务是否完成,以便客户端可以刷新状态并获取任务是否完成的标志?

java spring spring-boot asynchronous
2个回答
1
投票

在异步方法中,将一些共享数据结构“taskProcessing”标志设置为 true,并在最后设置为 false。当再次调用任务并且taskProcessing为true时返回错误。简单的。


0
投票

是的,我通过设置 AtomicBoolean 作为标志并将线程池限制为 1 来解决这个问题。 – 你是如何解决这个问题的..即使我有一个要求,我也不想允许并发异步调用,直到我的第一个异步调用完成。你能提供一些示例代码吗@JuNe

© www.soinside.com 2019 - 2024. All rights reserved.