如何更改标准JDK corba ORB线程池的线程名称

Posted

技术标签:

【中文标题】如何更改标准JDK corba ORB线程池的线程名称【英文标题】:How to change the thread names of the standard JDK corba ORB threadpool 【发布时间】:2015-06-17 17:16:46 【问题描述】:

是否可以设置默认线程池中使用的标准 jdk corba ORB 的线程名称?

默认情况下,每个连接有 3 个线程。他们的名字毫无用处,因为他们总是默认为:p:default-threadpool; w: Idle。主要出于调试原因更改它们的名称会很棒。

查看 JDK com.sun.corba.se.impl.orbutil.threadpool.ThreadpoolManagerImpl 源代码,我可以看到无法从类外部访问该名称。目前,一旦我控制了线程,我就使用Thread.currentThread().setName() 来设置线程名称,但这似乎是一个hack。有没有更好的办法?

【问题讨论】:

【参考方案1】:

您可以遍历当前正在运行的线程并根据需要重命名它们。比如:

int counter = 1;
for (Thread t : Thread.getAllStackTraces().keySet()) 
  if (t.getName().startsWith("p:default-threadpool")) t.setName("Corba #" + counter++);

【讨论】:

我不知道这种方式。感谢那! ...但是我仍然无法完全识别线程并设置正确的名称。更具体地说,ORB 为每个连接的每个线程池创建 3 个线程。这意味着如果我有 2 个连接,我将获得 6 个线程。不幸的是,所有 6 个名称都相同,所以我无法区分它们属于哪个连接。 @Kostas 我明白了 - 我不知道该怎么做。

以上是关于如何更改标准JDK corba ORB线程池的线程名称的主要内容,如果未能解决你的问题,请参考以下文章

多线程 Corba 客户端

如何在 Java 上实现 CORBA AMI

CORBA 错误:方法中的 ORB 初始化

OpenDDS 环境搭建

同一进程中是不是可以有多个 ORB 对象?

JDK线程池Tomcat线程池Dubbo线程池的不同