【发布时间】:2011-06-05 19:22:09
【问题描述】:
我们有一个处理请求的 Java 应用程序。自然地,有一个线程池,其中的线程以一些无关紧要的名称命名,如“processor-1”、“processor-2”等。我们想知道每次收到一个名称的请求时重命名处理线程是否是个好主意这将指示正在处理哪个请求。
我感觉有些不对劲,但想不出一个好的理由。我记得有几个从线程转储分析多线程问题的案例,知道我是否在两个连续的转储中看到相同的线程对我来说非常重要。但是,我意识到我可以查看线程 ID。在 log4j 日志中,编写线程名称是一种常见的做法,我记得很多用它过滤的情况。但我仍然不确定我在这里是否有良好的“防线”。
常见的做法是什么?继续重命名线程是个好主意吗?
有Renaming Threads in Java 或Should threads in Java be named for easier debugging? 之类的相关问题,但它们没有解决这个具体问题。
【问题讨论】:
-
Thread.getId 确实不错。根据需要重命名线程,该信息仅用于调试,它只是 Thread 类中的
char[] name字段。 -
调试可以,否则不要
-
@MeBigFatGuy,除了调试/分析线程名称没有任何用途(并且不在内部使用)
标签: java multithreading