我不熟悉并发编程,并且一直在处理具有要处理的项目队列的代码,这会传递给某些工作线程,即由用户指定的编号。目前,我只是试图用两个工作线程加上主线程来完成它。在Java中使用多个线程
private static class workerThread extends Thread {
workerThread(){
super();
}
public void run(){
while (!workQueue.isEmpty()) {
String x = workQueue.remove();
//System.out.println("work queue size: " + workQueue.size());
Vector<String> list2 = new Vector<String>((Vector) table.get(x));
list2 = process(x, list2);
//System.out.println(list2 + "list2");
table.put(x, list2);
//System.out.println(x + "key" + "value" + vvv);
}
}
这就是线程的WorkerThread类,我已经尝试了通过创建两个新线程调用它:
workerThread wt = new workerThread();
workerThread wt2 = new workerThread();
wt.start();
wt2.start();
try {
wt.join();
wt2.join();
} catch (InterruptedException ex) {
Logger.getLogger(includeCrawler.class.getName()).log(Level.SEVERE, null, ex);
}
我不知道这是否正确,或将因任何benfit等待连接?谢谢你的帮助。
我觉得Sarconi会从首先理解线程中受益 – MadcoreTom
我有一点看线程池,但这个练习似乎有点复杂。哦,我用了一个Vector,因为它是同步的。我没有意识到它已经过时了。 – drunkmonkey
来自C++开发,我可以肯定地说,不要使用'Vector',只是为了心理一致性。并不是说它更好,只是这可能是海报使用它的原因。 – jli