问题描述
我在开发 Java 应用程序时有一个关于 Thread 的问题。
下面的代码是将代码打印到thread.currentThread()中的结果;
Thread[ForkJoinPool-1-worker-2,5,main]
1 是否表示池的索引?
2 是指工人编号吗?
我不知道 1、2、5 的确切数字含义。
谢谢。
解决方法
如果您查看 ForkJoinPull 类,您可以找到许多构造函数之一
ForkJoinPool(...){
....
this.workerNamePrefix = "ForkJoinPool-" + nextPoolId() + "-worker-";
....
}
wherenextPoolId()
是 poolNumberSequence。初始化后,workerNamePrefix 将具有下一个值 - “ForkJoinPool-1-worker-...”。
之后,方法 final WorkQueue registerWorker(ForkJoinWorkerThread wt) {}
将在字符串 1414 (wt.setName(prefix.concat(Integer.toString(tid)))) 中设置线程名称,其中 wt 是 ForkJoinWorkerThread 和 tid 是线程的 pid。
您在输出中显示的名称。