通过Java VisualVM和jconsole等工具查看,发现带有输出语句的请求,线程状态都变成了BLOCKED,都在等待java.io.PrintStream的锁,同时发现有log日志打印到控制台的请求也出现了这个情况,即线程状态都变成了BLOCKED,都在等待java.util.logging.ConsoleHandler
的锁:
从上图可以看出,在等待的锁目前被"http-nio-80-exec-4"拥有:
这个线程一直处于RUNNABLE状态
问题很好解决,不让程序在控制台输出任何东西就好了,日志存文件。
但是究竟是什么原因造成的呢? 查到这里,没有了头绪,希望有知道的能够指点一二,不胜感激。
目前最大的疑问就是像"http-nio-80-exec-4"这种线程处于RUNNABLE状态,但是好像又永远运行不完,导致后面所有带输出的请求线程都成了BLOCKED状态。