Я использую следующий, чтобы получить ExecutorService
для подписок:RXJava - нить приоритет
public static ExecutorService getThreadPoolExecutorService(int threads)
{
int NUMBER_OF_CORES = Runtime.getRuntime().availableProcessors();
ThreadPoolExecutor threadPoolExecutor = new ThreadPoolExecutor(
NUMBER_OF_CORES * 2,
NUMBER_OF_CORES * 2,
60L,
TimeUnit.SECONDS,
new LinkedBlockingQueue<Runnable>()
);
return Executors.newFixedThreadPool(threads, threadPoolExecutor.getThreadFactory());
}
И использовать его как следующее:
public static Scheduler getBackgroundSchedular()
{
if (mBackgroundExecutorService == null)
mBackgroundExecutorService = ThreadUtil.getThreadPoolExecutorService(4);
return Schedulers.from(mBackgroundExecutorService);
}
И я использую этот Schedular для моих наблюдаемых, что должна бежать в фоновом режиме.
Вопрос
Как использовать PriorityBlockingQueue
для RXJava? Обычно я использую некоторые специальные runnables, которые реализуют функцию сравнения и используют соответствующую функцию сравнения для PriorityBlockingQueue
и заменяют LinkedBlockingQueue
в примере выше на PriorityBlockingQueue
, но как это сделать с помощью RXJava-наблюдаемых?
Рассмотрим следующий пример: У меня есть один который загружает все папки и содержимое с SD-карты. Я уже показываю папки, как только я знаю их имя, наблюдаемый продолжит работу в фоновом режиме. Когда я нажимаю на разгруженную папку, я создаю вторую наблюдаемую, которая загружает только одно содержимое папок => Я хочу, чтобы этот поток имел более высокий приоритет, чем поток основных наблюдаемых. Отмена подписки на основной наблюдаемый является опцией, но мне все равно нужны данные от нее, поэтому отказ от подписки - это не самый лучший вариант ... – prom85
Что не так с использованием планировщика ввода-вывода для запуска этого единственного каталога и разрешения на работу в ОС? – akarnokd
Я вижу значительные улучшения скорости, когда я сначала отменяю подписку на основные наблюдаемые ... Я хотел проверить, имеет ли более высокий приоритет для наблюдаемой одной папки одинаковый эффект ... – prom85