我想知道AspectJ中是否有一种方法可以为每个线程声明一个方面,还有一种方法可以为每个线程组声明一个方面吗?
通过线程团队,我指的是这个例子:
给定线程'X'创建'N'个新线程,然后'X'是该团队的主人,如果该团队中的给定线程'Y'也由他们自己创建一个新团队,'Y'将成为这个新团队的主人。所以我想知道我是否可以通过线程'X'向团队生成一个方面'A',并为团队'Y'声明方面'A'的不同“实例”。
答案 0 :(得分:1)
AspectJ仅操纵字节代码。因此,在生成Aspects钩子时,它无法确定运行时信息(您知道调用代码的线程是运行时信息)。
如果您需要创建线程唯一状态,请使用ThreadLocal。 如果需要创建ThreadGroup唯一状态,则应该进行一些手动操作。了解如何实施:ThreadGroup local variables。还要注意Java cannot determine parent thread,所以你需要使用ThreadGroup。
每当你想使用ThreadLocal状态和Aspects时,想想你的程序设计,对你来说是正确的吗?