Форум программистов, компьютерный форум CyberForum.ru

Программирование Android

Войти
Регистрация
Восстановить пароль
 
KillAndEat
63 / 63 / 8
Регистрация: 17.05.2013
Сообщений: 286
#1

Ожидание завершения пула потоков - Программирование Android

10.10.2013, 16:22. Просмотров 979. Ответов 1
Метки нет (Все метки)

Нужно чтоб результат этого кода возвращался по завершению выполнения всех потоков в пуле

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
ExecutorService exService = Executors.newFixedThreadPool(5);
 
        for (int i = 0; i < 5; i++) {
 
            GetFullStoryInfo fullStoryInfo = new GetFullStoryInfo(storyNumber,
                    this);
            storyNumber--;
            
                exService.submit(fullStoryInfo);
            
        }
                
        return storyNumber;
пробовал при помощи этого

Java
1
2
3
4
5
6
7
exService.shutdown();
        try {
            exService.awaitTermination(10, TimeUnit.SECONDS);
        } catch (InterruptedException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
не помогло.

Предполагаю что нужно использовать защелку, но не понимаю как=) Подскажите пожалуйста.

З.Ы. Гдето читал что ArrayList потокобезопасная конструкция по умолчанию, это так?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.10.2013, 16:22     Ожидание завершения пула потоков
Посмотрите здесь:

Ожидание завершения AsyncTask - Программирование Android
Имеется класс &quot;расширяющий&quot; AsyncTask. Как я понимаю при создании объекта этого класса создается новый поток который выполняется...

Завершения потока - Программирование Android
Можно как-нить запустить новый поток, только после того как завершится первый???

Как дождаться завершения RequestTask? - Программирование Android
при создании активити в new RequestTask().execute делаю веб запрос, по результатам которого достраивается интерфейс... т.к. в потоке его...

Круг для завершения активности - Программирование Android
Здравствуйте! Хочу спросить как можно добиться вот такого результата: Имеется Окружность, а внутри окружности имеется маленькая...

AsyncTask не выполняет код после завершения - Программирование Android
При окончании работы doInBackground не вызывается onPostExecute класс ParseTask: public class ParseTask extends AsyncTask&lt;String,...

Почему после завершения работы приложение активно? - Программирование Android
Установил программу на телефон. Протестил, делаю выход:finish(); System.exit(0); Открываю настройки-&gt;приложения-&gt;(моя программа) ...

Ожидание подключения wifi - Программирование Android
Включаю wifi и пытаюсь дождаться подключения. Идея следующая final class ConnectivityReceiver extends BroadcastReceiver { ...

Дождаться завершения работы AsyncTask и выполнять код дальше - Программирование Android
Помогите, пожалуйста. Мне нужно дождаться завершения работы AsyncTask и только потом выполнять код дальше. Я уже понял, что для этого нужно...

Ожидание подключения к серверу (ProgressDialog) - Программирование Android
Здравствуйте! Мне нужно, чтобы при переходе на MainActivity вылазил ProgressDialog (он проверяет есть ли подключение к серверу), если...

Ожидание ответа от запроса к серверу по сети - Программирование Android
Всего доброго! Использую Volley для получения ответа от сервера, мне нужно чтобы при нажатии на кнопку выполнялся запрос и ответ на...

Тонкости потоков - Программирование Android
Не до конца понимаю что из себя представляет поток в яве андроида! Сделал второй поток для помощи в отрисовке. Он в бесконечном цикле...

Ожидание завершения потоков - Delphi
Подскажите пж. как дождатся окончание выполнения потоков в unit-2 и потом продолжить в unit-3 чет не получается с условием так как в 22...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Netscape
371 / 358 / 48
Регистрация: 02.10.2009
Сообщений: 712
Записей в блоге: 4
10.10.2013, 16:58     Ожидание завершения пула потоков #2
Вот, набросал простенький пример:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
import java.util.concurrent.BrokenBarrierException;
import java.util.concurrent.CyclicBarrier;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
 
public class Main {
    
    static final int THREADS_NUMBER = 5;
    
    public static void main(String[] args) {
        final CyclicBarrier barrier = new CyclicBarrier(THREADS_NUMBER, 
                new Runnable() {
                    @Override
                    public void run() {
                        System.out.println("All threads finished");
                    }
                });
        
        ExecutorService exService = Executors.newFixedThreadPool(THREADS_NUMBER);
        
        for (int i = THREADS_NUMBER; i > 0; i--) {
            Task task = new Task(i, barrier);
            exService.submit(task);
        }
        
        exService.shutdown();
    }
    
    private static class Task implements Runnable {
        
        int i;
        CyclicBarrier barrier;
        
        public Task(int i, CyclicBarrier barrier) {
            this.i = i;
            this.barrier = barrier;
        }
        
        @Override
        public void run() {
            try {
                Thread.sleep(i * 1000);
                System.out.println("Thread #" + i + " finished");
                barrier.await();
            } catch (InterruptedException e) {
                e.printStackTrace();
            } catch (BrokenBarrierException e) {
                e.printStackTrace();
            }
        }
        
    }
 
}
Цитата Сообщение от KillAndEat Посмотреть сообщение
Гдето читал что ArrayList потокобезопасная конструкция по умолчанию, это так?
Нет, CopyOnWriteArrayList потокобезопасная.

Добавлено через 1 минуту
Можно еще CountDownLatch заюзать, но я барьеры больше люблю.
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru