gpt4 book ai didi

Java 线程创建跟踪

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:54:11 28 4
gpt4 key购买 nike

我有一个 Java 应用程序,它非常注重并发性和可突发容量。这意味着它使用线程池来排队和执行事件。

所有这些线程池都是固定大小的,但我经常发现自己在 Linux (CentOS 5.5) 服务器上部署应用程序时遇到打开文件描述符限制。

根据我的统计,应用程序在负载下时,不应同时创建超过 20 个线程,但我达到了 1024 的 ulimit

有什么方法可以追踪这些线程回到创建它们的代码/池吗?

最佳答案

理智的线程池应该(至少是可选的)允许指定名称。

对于正常ThreadPoolExecutor你需要实现一个 ThreadFactory适本地命名线程。然后使用 setThreadFactory()使其使用您的实现。

您还可以使用 Guava ThreadFactoryBuilder并调用setNameFormat()获得预构建的功能:

ThreadPoolExecutor myExecutor = ...;
ThreadFactory tf = new ThreadFactoryBuilder().setNameFormat("myExecutorThread-%d").build();
myExecutor.setThreadFactory(tf);

关于Java 线程创建跟踪,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5298509/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com