Java线程池-日志中的线程数量

3

我正在使用一个网络库,该库使用线程池将任务委派给专门的请求处理程序。在库的日志中,我看到以下内容:

[05.03.2010 16:11:27] [pool-3-thread-9] DEBUG ...
[05.03.2010 16:11:27] [pool-1-thread-447] DEBUG ......
[05.03.2010 16:11:27] [pool-1-thread-447] DEBUG ....
[05.03.2010 16:11:27] [pool-1-thread-440] DEBUG ..

线程 ID 正在缓慢上升,但内存使用量保持一致。这是否意味着这里正在使用缓存的线程池?那个 Thread ID 相当大,我希望这并不意味着应用程序中有超过 400 个空闲/工作线程。

2
使用任务管理器查看应用程序中正在运行的线程数量。 - Roman
2个回答

3
在Java的Thread源代码中,有以下代码:
private static int threadInitNumber;

private static synchronized int nextThreadNum() {
    return threadInitNumber++;
}

当用户没有指定线程名称时,该数字由Thread构造函数使用。他们不会重用已终止/完成的线程的编号。

因此当内存消耗相等时:这绝对意味着旧的线程未被(完全)重用,而是已终止或已完成。


0

您可以查看进程的堆栈跟踪(在Unix上使用kill -QUIT process_id命令)。 这应该显示出进程的所有线程。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接