目前,我正在开发一个应用程序,它在16个线程上运行相同的进程(在本例中是TaskInformation,具有不同的输入参数)。我想创建Aspect,从中获取参数和值,并将它们存储在Aspect内部创建的Object中。
我的问题是这个对象是为每个线程独立创建的,我可以调用对象的确切示例,这样我就可以为每个线程存储正确的值。
如果可能的话,我会避免threadLocal,因为这是我目前在没有方面的情况下使用的东西,我希望我可以避免它。
谢谢你提前帮忙!
我使用threadLocal,我想重构它。
编辑:我们有一个Process类,在其中我们正在查看process方法,该方法在多个线程中同时运行。我想用每个线程的信息填充LoggingObject,并在最后将它们记录为整个处理的摘要。
范例:
public aspect MyAspect {
private final LoggingObject log = new LoggingObject()
pointcut processMethodExecution(TaskInformation taskInfo):
execution(TaskStatus Processor.process(TaskInformation)) && args(taskInfo);
after(TaskInformation taskInfo): processMethodExecution(taskInfo) {
logger.info("Processing task with ID: " + taskInfo.getTaskId());
log.setID(taskInfo.getTaskId())
}
}
1条答案
按热度按时间blmhpbnm1#
您有几种选择: