Mar*_*tin 0 java linux multithreading centos5 threadpool
我有一个Java应用程序,重点关注并发性和可突发容量.这意味着它使用线程池来排队和执行事件.
所有这些线程池都是固定大小的,但是当应用程序部署在Linux(CentOS 5.5)服务器上时,我经常发现自己遇到了打开文件描述符限制.
据我所知,应用程序在加载时,任何时候都不应该创建超过20个线程,但我的命中ulimit率为1024.
有没有什么办法可以跟踪这些线程回到创建它们的代码/池?
一个理智的线程池应该(至少可选)允许指定名称.
对于正常情况,ThreadPoolExecutor您需要实现一个ThreadFactory适当命名线程的方法.然后使用setThreadFactory()它来使用您的实现.
您还可以使用Guava ThreadFactoryBuilder并调用setNameFormat()以预先构建该功能:
ThreadPoolExecutor myExecutor = ...;
ThreadFactory tf = new ThreadFactoryBuilder().setNameFormat("myExecutorThread-%d").build();
myExecutor.setThreadFactory(tf);
Run Code Online (Sandbox Code Playgroud)