我对线程很新。我需要实现这样的方法,它将创建2个线程,做一些事情然后杀死它们 - 在for循环中的所有内容。
主要目的:我需要确保线程与for循环中的相同“i”值并行工作。这就是为什么我不在每个线程中声明for循环。 (哪一个先完成我不在乎)
我的愿景
public void threadsJob() throws Exception{
for(int i = 1; i<1000 ; i++) {
**final** int j = i;
Thread t1= new Thread(new Runnable() {
public void run() {
foo(j);
}
}
);
Thread t2= new Thread(new Runnable() {
public void run() {
bar(j);
}
}
);
t1.start();
t2.start();
t1.join();
t2.join();
}}
我的问题:代码有多可怕?应该改变什么?此外,我更喜欢保持代码非常简单。但是,我不确定上面的代码是否合适的例子:)
答案 0 :(得分:2)
使用Executors.newFixedThreadPool(2)
http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/Executors.html
执行两个执行工作的Runnable。
http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/ExecutorService.html
然后在ExecutorService上关闭并执行awaitTermination。