BlockingQueue<Runnable> queue = new LinkedBlockingQueue<Runnable>();
ThreadPoolExecutor ex = new ThreadPoolExecutor(1,1, 1L, TimeUnit.MINUTES, queue);
final HashMap<String,Response> responses = new HashMap<String,Response>();
ex.execute(new Runnable() {
@Override
public void run() {
android.os.Process.setThreadPriority(Process.THREAD_PRIORITY_MORE_FAVORABLE);
Response response = getService().getProducts();
responses.put("1",response);
}
});
....
....
...
ex.shutdown();
ex.awaitTermination(1000, TimeUnit.DAYS);
long time2 = System.currentTimeMillis();
Я делаю много запросов, по которым я хочу получать уведомление по окончании.ThreadPoolExecutor more threads = slower android
Тестирование на android 2.3 gingerbead на старом устройстве с ThreadPoolExecutor с 1 нить занимает 1-1,2 секунды. Использование 4 потоков занимает больше 4-5 секунд !.
Тестирование на вкладке галактики 3 требуется с одной нитью 100 миллисекунд с 4, она занимает 60 мс.
Почему это происходит?
Обратите внимание, что вместо ручного создания пула потоков вы можете использовать предварительно сконфигурированный метод 'Executors.newXxxxThreadPool'. – assylias
Я знаю, но не пробовал, чтобы иметь конфигурацию. спасибо. – GorillaApe