создать поток, сделать что-нибудь, убить поток - все внутри цикла [JAVA]

1

Я очень новичок в потоках. Мне нужно реализовать такой метод, который будет создавать 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();
}}

Мой вопрос: насколько ужасен этот код? что нужно изменить? Также я предпочитаю держать код довольно простым. Тем не менее, я не уверен, что приведенный выше код подходит для примера :)

  • 0
    В зависимости от того, что на самом деле делают foo и bar, вполне вероятно, что создание новых потоков займет больше времени, чем то, что нужно было бы выполнять последовательно. Используйте пул потоков.
Теги:
multithreading
loops
coding-style

1 ответ

2
Лучший ответ

Использовать 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.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню