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

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

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

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

10.10.2013, 16:22. Просмотров 956. Ответов 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     Ожидание завершения пула потоков
Посмотрите здесь:

Android Ожидание подключения wifi
Android Завершения потока
Круг для завершения активности Android
Как дождаться завершения RequestTask? Android
Тонкости потоков Android
Delphi Ожидание завершения потоков
Android Ожидание завершения AsyncTask
Android Ожидание ответа от запроса к серверу по сети
Почему после завершения работы приложение активно? Android
Android Дождаться завершения работы AsyncTask и выполнять код дальше
C Linux Ожидание завершения потоков ядра
Android AsyncTask не выполняет код после завершения

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
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 заюзать, но я барьеры больше люблю.
Yandex
Объявления
10.10.2013, 16:58     Ожидание завершения пула потоков
Ответ Создать тему
Опции темы

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