java线程中的多线程唯一id
我的应用程序使用一个日志组件,它需要跟踪每个调用的唯一标识符
我的出发点是一个MDB,它显然会启动对几个类的一系列方法调用。 每个类创建一个新的记录器对象,类似于log4j,并使用它将事件记录到数据库中。对于创建的每个记录器对象,都会为其分配一个唯一的标识符。该标识符应跟随线程,直到后续调用全部返回,并且MyMDB中的onMessage方法终止
问题是,在处理一条JMS消息的过程中,MDB接收到另一条消息,我的ID被弄混了
我用头撞桌子已经有一段时间了,我想答案就在眼前,但是你有什么想法吗?如何确保一个“进程”可以使用自己的ID进行日志记录,即使在第一个进程完成之前启动了另一个进程
先谢谢你
# 1 楼答案
你为什么不能使用^{}
如果有,^{} 应该是所有需要的。保留一个静态实例,然后在MDB的
onMessage()
方法中获取一个ID,并在处理消息时保留它(可能在ThreadLocal
中)# 2 楼答案
通常你想用“友好”的名字
然而,这可能不是唯一的或有意义的,在这种情况下,您可以使用唯一的id