请查看代码和图片。我想组织一个线程池。当我打印ThrdPool的内容时,所有线程的id都等于1.我不知道该怎么做。我想这是因为变量的范围。在addHotThrd()方法中,我创建了新的HotThrd(引用类型)。在街区外,所有参考资料将被取消。你能以某种方式帮我组织一个线程数未知的哈希映射。
public ThrdPool(int hotThrds, long timeout) {
this.freeThreadsMap = new HashMap(0);
this.hotThreadsMap = new HashMap(0);
this.hotThreads = hotThrds;
this.timeout = timeout;
for (int i = 0; i < hotThreads; i++) {
addHotThrd();
}
}
public long addHotThrd() {
HotThrd newThrd = new HotThrd();
hotThreadsMap.put(newThrd, newThrd.getId());
return newThrd.getId();
}
答案 0 :(得分:0)
假设您的HotThrd类扩展了Thread类,您可以在初始化期间设置线程的名称。
class HotThrd extends Thread{
HotThrd(String name){
super(name);
}
}
....
....
public long addHotThrd(int i) {
HotThrd newThrd = new HotThrd("Thread"+i);
hotThreadsMap.put(newThrd, newThrd.getId());
return newThrd.getId();
}