AspectJ - @Before,方法和线程

时间:2014-10-24 09:25:26

标签: multithreading aspectj

在AspectJ中:

@Before("execution(method_a)")
public void method_b() {
}
@Before("execution(method_a)")
public void method_c() {
}
  1. method_a和method_b是否必须具有相同的threadId?
  2. 如果method_b和method_c将并行运行,method_a是线程安全的吗?
  3. 非常感谢

1 个答案:

答案 0 :(得分:3)

免责声明:我在这里真的是在谈论AspectJ,因为你问过这个方式,关于Spring AOP。

答案是:AspectJ仪器Java字节码,但不在自己的线程中运行。建议method_bmethod_c都将在与method_a相同的线程中运行(可怕的名称选择,BTW),除非您从建议中开始自己的线程。

对于执行指向同一个连接点的两个建议的顺序,如果两个建议通过@DeclarePrecedence在不同方面,则可以选择它。如果它们在同一方面,则顺序如here所述。