【发布时间】:2026-01-01 05:55:01
【问题描述】:
我只是对 Threads 和 ThreadFactory 有点困惑。所以我提出这个问题。 我的目的是为每个正在运行的线程设置一个名称,以便我可以轻松地在日志中跟踪哪个线程正在运行和中断。使用 ThreadFactory 我看到它是可能的。
String someName="fileName"; // Inside first file
...........................
.........................
Executors.newFixedThreadPool(30, new ThreadFactoryBuilder().setNameFormat(someName).build()); //in singleton class
当线程开始执行某些任务时,我正在使用Thread.currentThread().getName() 获取当前正在进行的线程名称,这正在获取我作为 someName 的值。我的问题是,因为我在 newFixedThreadPool 中命名为 someName ,所以这个池中的所有线程都将保持相同的名称。如果我再次调用ExecutorService(这是单例类)并分配someName="fileName2"会发生什么
【问题讨论】:
-
这篇文章会对你有所帮助。 ThreadFactory usage in Java
-
您想知道 ThreadFactoryBuilder 是如何工作的,但它不是内置类。我假设你的意思是那个名字的番石榴类?这个类的来源说它做了什么?
标签: java multithreading singleton threadpool executorservice