java - 如何获取固定线程池中线程的名称

标签 java multithreading threadpool

我试图在 run 方法中显示正在运行的线程的名称。这些线程是在固定的线程池中创建的:

ExecutorService e = Executors.newFixedThreadPool(size);

Java API 无法帮助我,我该怎么做?

此外,如果知道如何自定义池中这些线程的名称,那就太好了。

最佳答案

以下示例可以回答您的两个问题:

    ExecutorService es = Executors.newFixedThreadPool(4, new ThreadFactory() {
        private final AtomicInteger counter = new AtomicInteger(1);
        @Override
        public Thread newThread(Runnable r) {
            return new Thread(r, "MyThread-" + counter.getAndIncrement());
        }
    });
    es.submit(new Runnable() {
        @Override
        public void run() {
            System.out.println(Thread.currentThread().getName());
        }
    });

ThreadFactory 来救援!请注意,线程不需要具有唯一的名称。

关于java - 如何获取固定线程池中线程的名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20575434/

相关文章:

java - 解析 KML 文档时 publicId 和 systemId 之间需要空格

java - 没有从 sqlite 表中获取正确的值或没有正确插入它

c# - 锁语句有多贵?

java - notifyAll 操作的复杂性

c# - 对于许多并发的 http 请求,是否有一个好的线程模型?

multithreading - 我怎样才能完成ThreadPool.Join?

java - 如何将浮点值舍入为 double 值?

Java:将元素从一个 ArrayList 传输到另一个 ArrayList

java - 为什么我的线程使我的 JavaFX 应用程序滞后?

.net - 如何本地化应用程序中所有线程的字符串资源查找?