gpt4 book ai didi

java - AspectJ 执行是线程安全的吗?

转载 作者:行者123 更新时间:2023-11-30 02:52:18 25 4
gpt4 key购买 nike

知识问题=没有代码,没有错误,没有报告示例。

我在 ClassAmethod() 上应用了连接点,并且 ClassA 不是单例。我创建了处理此连接点的 MyAspect

问题:如果有 2 个 ClassA.method() 调用者,并且调用者在 2 个不同的线程上工作(例如 Web 请求),AspectJ 将在该线程上运行 MyAspect 2 个不同的线程还是单个线程?

我认为AspectJ在编织类的同一线程中执行MyAspect(在本例中为ClassA)。

最佳答案

AspectJ 将在当前线程上执行您的方面。这意味着,如果您有多线程执行,您的方面也将在多个线程上运行。如果您的方面适用于共享状态,您需要确保以安全的方式访问您的共享状态。

另请注意,除了默认的单例之外,还有其他方面实例化模型。对于单例方面,只会在您的应用程序中创建该方面的一个实例。您可以使用 perthis()pertarget()percflow()percflowbelow() 修饰符来更改您的方面将如何实例化,AspectJ 将在每个对象每个控制流的基础上创建您的方面的新实例。您也许能够使用这些实例化模型来隔离方面状态,但如果您使用共享状态,则基本规则仍然适用:您需要注意对共享状态的线程安全访问。

关于java - AspectJ 执行是线程安全的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38243553/

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