Я новичок в AspectJ.Был в состоянии создать простые классы JUnit и Aspect для регистрации ThreadId, который регистрирует Parent Thread Id.Но я не могу понять, как войти в систему Child ThreadId.
Учитывая следующий фрагмент кода, я хотел бы зарегистрировать идентификатор потока как родительского, так и дочернего, используя AspectJ.
JUnit:
@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);
}
Аспект: следующий аспект регистрирует Parent ThreadId.
before() :
call(* ExecutorService+.submit(..))
{
System.out.println("Parent Thread Id: "+Thread.currentThread().getId());
//System.out.println("Child Thread Id: "+??); //?? - how to capture child thread id?
}
Я понимаю, что здесь используется совет «до», а также метод перехвата отправки, что также может быть проблемой.Как я могу записать идентификатор дочернего потока вместе с идентификатором родительского потока, используя правильное выражение Pointcut?Спасибо.