【发布时间】:2015-09-05 19:17:46
【问题描述】:
我正在尝试跟踪以获取在使用 AspectJ 的程序中创建的每个新线程的父线程 ID。由于一个新线程使用 start() 方法开始执行,我认为以下技术应该有效:
aspect getParentThread {
pointcut threadStarting(): call(public void start());
Object around(): threadStarting() {
long parentThread = Thread.currentThread().getId();
Object ret = proceed();
long newThread = Thread.currentThread().getId();
if (parentThread != newThread) {
/*Store parentThread id in data structure */
}
return ret;
}
}
但这根本行不通。尽管通知会执行,但即使在proceed() 完成后也只有一个线程ID。那么我在这里做错了什么?
【问题讨论】:
标签: java multithreading aspectj aop