1

我想知道 AspectJ 中是否有一种方法可以为每个线程声明一个方面,以及是否有一种方法可以为每个线程组声明一个方面?

通过线程团队,我指的是这个例子:

给定线程'X'创建'N'个新线程,然后'X'是这个团队的主人,如果这个团队中的给定线程'Y'也由他们自己创建一个新团队,'Y'将成为主人这个新团队的。所以我想知道我是否可以通过线程'X'向团队生产的团队声明一个方面'A',并为团队'Y'声明一个方面'A'的不同“实例”。

4

1 回答 1

1

AspectJ 只操作字节码。所以它在生成Aspects hook时无法确定运行时信息(你知道调用代码的线程是运行时信息)。

如果您需要创建线程唯一状态,请使用ThreadLocal。如果您需要创建 ThreadGroup 唯一状态,您应该做一些手动工作。看看它是如何实现的:ThreadGroup local variables。另请注意,在 Java 中您无法确定父线程,因此您需要使用 ThreadGroup。

并且每次当你想使用 ThreadLocal 状态和 Aspects 时,想想你的程序设计,它是否适合你?

于 2013-02-05T10:01:50.793 回答