如何使用Java中的HashMap动态创建线程

时间:2014-10-14 06:18:16

标签: java multithreading hashmap

Thread[] threads = new Thread[numThreadsToCreate];
for (int i = 0; i < threads.length; i++) {
    threads[i] = new Thread(yourRunnable);
    threads[i].start();
}

上面是一种使用数组动态创建线程的方法。但我想使用hashmap创建线程,因为我想随时创建它(所以没有循环)并想要跟踪线程。所以想到使用密钥和&amp; hashmap的元素功能。

 HashMap<String, Queue_Inserter> threadHash = new HashMap<>();

这里我创建了hashmap。 Queue_Inserter是我想要使用的线程类的名称。如果我通常创建线程,这就是它的工作原理。

Queue_Inserter insert = new Queue_Inserter("Insert", queueHash, mainConfig, keyName);
insert.start();

我想要线程的那些参数。 queueHash是另一个hashmap,mainConfig是JSONObject。 我已经尝试了这一点,我不知道如何在此之后传递参数。请帮忙。

以下是线程类:

public class Queue_Inserter implements Runnable {
    private Thread t;
    private String threadName;
    HashMap<String, ConcurrentLinkedQueue<JSONObject>> queueHash = new HashMap<>();
    ConcurrentLinkedQueue<JSONObject> queue = new ConcurrentLinkedQueue<>();
    JSONObject config;

    public Queue_Inserter(String name, HashMap<String, ConcurrentLinkedQueue<JSONObject>> queueHash, JSONObject config, String keyName){
        threadName = name;
        this.queueHash = queueHash;
        this.config = config;
    }

    @Override
    public void run() {

    }

    public void start (){
        if (t == null){
            t = new Thread (this, threadName);
            t.start ();
        }
    }
}

0 个答案:

没有答案