获取Java 1.4中线程的唯一标识符
在Java1.4中,有没有比使用获取Java 1.4中线程的唯一标识符,java,multithreading,uniqueidentifier,Java,Multithreading,Uniqueidentifier,在Java1.4中,有没有比使用Thread.getName()更好的获取线程ID的方法 我的意思是,单元测试中的getName()返回类似“Thread-1”,但在WebLogic 10中,我得到“[ACTIVE]ExecuteThread:'1'表示队列:'WebLogic.kernel.Default(self-tuning)'.xml”(理论上可以,但定义为不可以,实际上也不会) 1.5的使用寿命即将结束,但是如果您使用的是旧的dusty甲板1.4,那么您可以使用来实现自己的。(请注意,
Thread.getName()
更好的获取线程ID的方法
我的意思是,单元测试中的getName()
返回类似“Thread-1”
,但在WebLogic 10中,我得到“[ACTIVE]ExecuteThread:'1'表示队列:'WebLogic.kernel.Default(self-tuning)'.xml”
(理论上可以,但定义为不可以,实际上也不会)
1.5的使用寿命即将结束,但是如果您使用的是旧的dusty甲板1.4,那么您可以使用来实现自己的。(请注意,不要过于关注JavaSE6API文档!)如果您使用的是JDK1.5或更高版本,则可以使用
是每次运行单元测试时都需要一个一致的值,还是一个唯一的值就足够了?为什么需要这个值?因为根据你的答案,有几种方法 首先,了解线程的名称不能保证是唯一的。身份代码也不是 如果你真的想把一个唯一的ID和一个线程关联起来,你需要自己去做。可能是用了一张身份地图。然而,这将引入一个强大的参考,你不希望在生产应用程序中出现 编辑:TofuBeer有可能更好的解决方案,尽管文档指出线程ID可以重用。如“”问题中所述,并由以下源代码确认: 如果您的应用程序仍在java1.4中,线程id很容易自己实现。
但是,此实现意味着在多次运行程序时,给定的线程将不具有相同的id。
因此,根据您的需要,您可能必须实施一个命名策略,该策略包括:
- 对于给定的运行时会话是唯一的
- 在会话之间重复使用
- 仍然链接到由1.4 JVM管理的内部原始命名策略(“线程1”、“线程2”…)
/* For generating thread ID */
private static long threadSeqNumber;
/* Set thread ID */
tid = nextThreadID();
private static synchronized long nextThreadID() {
return ++threadSeqNumber;
}