Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/377.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java “exec”后面的数字是什么意思;[http-bio-8080-exec-494][ERROR]”;?_Java_Spring_Maven_Tomcat7 - Fatal编程技术网

Java “exec”后面的数字是什么意思;[http-bio-8080-exec-494][ERROR]”;?

Java “exec”后面的数字是什么意思;[http-bio-8080-exec-494][ERROR]”;?,java,spring,maven,tomcat7,Java,Spring,Maven,Tomcat7,在对部署在Tomcat7上的传统Java Spring Maven项目进行调查时,日志如下所述- 2018-08-29 18:16:42:471+0600[http-bio-8080-exec-494][错误] 之后要求对号码进行解密 执行官- 那么“exec”的基本含义是什么呢? 对于上述情况,它是494 这是tomcat中线程池生成的线程ID号。真正的问题是不同的,这是一个内部信息,它的价值是什么,现在你知道了吗?我假设接近零…它很可能是由自定义生成的线程id,就像: Executor ex

在对部署在Tomcat7上的传统Java Spring Maven项目进行调查时,日志如下所述-

2018-08-29 18:16:42:471+0600[http-bio-8080-exec-494][错误]

之后要求对号码进行解密

执行官-

那么“exec”的基本含义是什么呢?
对于上述情况,它是494

这是tomcat中线程池生成的线程ID号。真正的问题是不同的,这是一个内部信息,它的价值是什么,现在你知道了吗?我假设接近零…

它很可能是由自定义生成的线程id,就像:

Executor executor = Executors.newFixedThreadPool(4, new ThreadFactory() {
    AtomicInteger threadId = new AtomicInteger(0);
    @Override
    public Thread newThread(Runnable r) {
        return new Thread(r, "http-bio-8080-exec-" + threadId.getAndIncrement());   // custom a thread factory 
    }
});

IntStream.range(0, 10).forEach(value -> {
    executor.execute(() -> {    
        System.out.println(Thread.currentThread().getName());   // print thread name
        try {
            Thread.sleep(100);
        } catch (Exception e) {

        }
    });
});
输出:

http-bio-8080-exec-0
http-bio-8080-exec-1
http-bio-8080-exec-2
http-bio-8080-exec-3
http-bio-8080-exec-0
http-bio-8080-exec-3
http-bio-8080-exec-1
http-bio-8080-exec-2
http-bio-8080-exec-0
http-bio-8080-exec-3

只有在调试涉及多线程的棘手问题时,这些信息才有意义rare@spi如果你想调试这些问题,从线程id开始,这意味着您离实际调试问题还很远…@Eugene我们观察到,当我们的系统处于满载状态时,该值上升到1600,并且奇怪地停止,而日志中没有给出任何错误。因此,我们感觉可能有太多未使用的线程造成内存泄漏。@Eugene当然^^^但通过查看线程id,您可以更好地了解发生了什么:有时您可以确定调用是在特定线程中完成的,查看id可能会确认或不确认您的假设。@M.A.K.Simanto yes 1600个活动线程是非常重要的。但是,id的增长并不意味着之前的所有线程都仍然处于活动状态,只有调试器/探查器才能判断。但是如果线程池设置正确,它就永远不会杀死和重新创建任何线程,只会重用旧线程,id不会增长。如果您的问题得到了回答,您可以接受它…@Eugene进一步调查以检查#活动线程,使用jprofiler阻止的线程,然后计划对问题稍加修改,然后接受答案。谢谢你的提醒。