Java 内有线程的HashMap
请看一下代码和图片。我想组织一个线程池。当我打印ThrdPool的内容时,线程的所有ID都等于1。我不知道该怎么办。我想这是因为变量的范围。在addHotThrd()方法中,我创建了新的HotThrd(引用类型)。在区块外,所有参考都将被取消。你能帮我组织一个具有未知线程数的哈希映射吗Java 内有线程的HashMap,java,multithreading,hashmap,Java,Multithreading,Hashmap,请看一下代码和图片。我想组织一个线程池。当我打印ThrdPool的内容时,线程的所有ID都等于1。我不知道该怎么办。我想这是因为变量的范围。在addHotThrd()方法中,我创建了新的HotThrd(引用类型)。在区块外,所有参考都将被取消。你能帮我组织一个具有未知线程数的哈希映射吗 public ThrdPool(int hotThrds, long timeout) { this.freeThreadsMap = new HashMap(0); this
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();
}
public ThrdPool(int hotThrds,长超时){
this.freeThreadsMap=newhashmap(0);
this.hothreadsmap=新HashMap(0);
this.hotthres=hotThrds;
this.timeout=超时;
对于(inti=0;i
假设您的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();
}
分享HotThrd的实现。你能澄清我应该做什么吗。现在我只想启动几个独立的线程,目前还不需要同步。为什么不能使用thread.setName(“XXX”)?它也将有助于您的日志记录。。