Я очень новичок в потоках. Мне нужно реализовать такой метод, который будет создавать 2 потока, что-то делать, а затем убивать их - все внутри цикла 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();
}}
Мой вопрос: насколько ужасен этот код? что нужно изменить? Также я предпочитаю держать код довольно простым. Тем не менее, я не уверен, что приведенный выше код подходит для примера :)
Использовать Executors.newFixedThreadPool(2)
http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/Executors.html
Выполните две Runnables, которые выполняют вашу работу.
http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/ExecutorService.html
Затем завершите работу и дождитесь завершения работы в ExecutorService.