[英]Java thread creation tracking
我有一個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);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.