java - 如何获取 FixedPool 中线程的编号 (ID)?
问题描述
我知道 Thread.currentThread().getName() 给了我池名称和池中这个线程的 ID,我怎样才能得到这个数字?
这是我提到的那一行的结果:
池 1 线程 1
我只需要最后一个数字。
解决方案
当你创建一个ThreadPoolExecutor
byExecutors.newFixedThreadPool
时,它会创建一个默认的ThreadFactory并且这个默认ThreadFactory
创建Thread
的名字是 like pool-x-thread-y
。
您可以自定义 aThreadFactory
并使用它构建线程池:
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
推荐阅读
- python-3.x - 如何提高数据加载性能python
- javascript - 解析错误;JavaScript中的意外令牌索引
- python-3.x - 在特定字符之间搜索最后一组文本
- bash - Git别名在克隆时自动为个人回购信息添加前缀?
- ios - 每次我在 Swift 中使用它时都必须启动一个 BLE 外围设备
- javascript - 来自 react-router-dom 的提示问题未触发
- mysql - 在存储过程中调用存储过程并将结果设置为变量时出现问题
- typescript - VSCode API:在终端中运行命令并使用输出
- python - 如何在 PyQt5 中为屏幕上的点移动设置动画
- javascript - 如何在 URL 中调用 echo 包括?