带有线程的HashMap

时间:2014-03-21 13:00:38

标签: java multithreading hashmap

请查看代码和图片picture 。我想组织一个线程池。当我打印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();
    }

1 个答案:

答案 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();
}