簡體   English   中英

Java線程創建跟蹤

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM