gpt4 book ai didi

java - Spring AOP 与多线程

转载 作者:行者123 更新时间:2023-12-01 11:06:58 24 4
gpt4 key购买 nike

使用 Spring AOP 进行异步线程处理安全吗?

让我用一个代码示例来更清楚地说明这一点:

@AfterReturning(pointcut = within(com..*)", returning = "result")
public void sampleWithNewThread(JoinPoint joinPoint, Object result) {
executorService.submit(() -> {
dbConnection.write(joinPoint.getSignature().getName());
dbConnection.write(result);
});
}

“接触”新线程中的 joinPoint 和 result 对象是否安全?这些是线程安全的吗?

我很确定它没问题,但我找不到它的证明引用。

最佳答案

JoinPoint 的 javadoc并且您可以从中检索的类型(例如Signature)没有明确声明它们是线程安全的。然而,它们不提供任何方法来改变它们,即。它们只公开 getter 方法。

您可以认为这意味着它们是不可变的,但您不需要这样做。只需在调用 @AfterReturning 注解方法的线程中检索值,并将这些值传递给另一个线程即可。

@AfterReturning(pointcut = within(com..*)", returning = "result")
public void sampleWithNewThread(JoinPoint joinPoint, Object result) {
final String signatureName = joinPoint.getSignature().getName();
executorService.submit(() -> {
dbConnection.write(signatureName);
dbConnection.write(result);
});
}

关于java - Spring AOP 与多线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32848241/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com