我知道Thread.currentThread()。getName()给我池中的池名和该线程的ID,我怎样才能得到这个号码?
这是我提到的那一行的结果:
池-1-线程1
我只需要最后一个号码。
答案 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)