如何获取FixedPool中线程的编号(ID)?

时间:2018-04-29 13:52:23

标签: java multithreading threadpool

我知道Thread.currentThread()。getName()给我池中的池名和该线程的ID,我怎样才能得到这个号码?

这是我提到的那一行的结果:

池-1-线程1

我只需要最后一个号码。

2 个答案:

答案 0 :(得分:0)

当您按ThreadPoolExecutor创建Executors.newFixedThreadPool时,它会创建默认ThreadFactory,此默认ThreadFactory会创建名为{{1}的Thread pool-x-thread-y }。

您可以自定义ThreadFactory并使用它构建线程池:

class NumberThreadFactory implements ThreadFactory {        
    int count = 0;
    public Thread newThread(Runnable r) {
        return new Thread(r, String.valueOf(count++));
    }
}
Executor executor = Executors.newFixedThreadPool(2, new NumberThreadFactory());

executor.execute(() -> System.out.println(Thread.currentThread().getName()));  // 1
executor.execute(() -> System.out.println(Thread.currentThread().getName()));  // 2

答案 1 :(得分:0)

对于一般案例没用,但为我完成了工作:

Thread.currentThread().getName().substring(Thread.currentThread().getName().length()-1)