【发布时间】:2020-11-12 12:44:30
【问题描述】:
我正在研究执行以下任务的流程:
1.Kafka Consumer consumes kafka message and does some task A
2.It then starts an async process using @Async in spring boot
3.It clears the context and exits
我正在使用 TaskDecorator 将上下文传递给 Async
public class AsyncTaskDecorator implements TaskDecorator {
ContextProvider provider = ContextProvider.getContext();
}
下面是我的 ContextProvider 类
private static final ThreadLocal<CountryContextProvider> CONTEXT = new ThreadLocal<>();
public static void clear() {
CONTEXT.clear();
}
我面临的问题是父线程在子线程可以使用 ContextProvider provider = ContextProvider.getContext();
复制之前在上下文中调用 clear如何确保子线程能够在父线程调用 clear 之前获取上下文。另外,我不能让主线程等待子线程,使用 Async 的重点是允许子线程独立执行。
【问题讨论】:
标签: java multithreading spring-boot