我是AspectJ的新手。能够创建一个简单的JUnit和Aspect类来记录ThreadId,后者记录父线程ID。但是我不知道如何记录子级ThreadId。
给出以下代码段,我想使用AspectJ记录父级和子级的线程ID。
JUnit:
lamTut::stringLength
方面:以下方面记录父ThreadId。
@Test
public void testExecutorService() {
ExecutorService service = Executors.newSingleThreadExecutor();
Runnable task = new Runnable() {
@Override
public void run() {
System.out.println("working on the task");
}
};
service.submit(task);
}
我了解它在这里使用“之前”建议,并且它正在拦截Submit方法,这也可能是一个问题。 如何使用正确的Pointcut表达式记录子线程ID和父线程ID?谢谢。
答案 0 :(得分:0)
您可以做的是拦截提交的任务参数,并增强该任务以打印所需的内容:
ArrayIndexOutOfBoundsException
一旦异步任务被执行,执行它的线程的ID将被打印。