Какой из них лучше подходит при выполнении нескольких фоновых задач Kotlin Coroutines или ThreadPool? - PullRequest
0 голосов
/ 30 сентября 2019

Я пытаюсь реализовать процесс запуска синхронизации, пока приложение выходит на первый план.

Я хочу сделать несколько вызовов API в фоновом потоке, какой из них будет лучше подходить для этого сценария Kotlin Coroutines или ThreadPool executor

Я пробовал с Kotlin Coroutines, но, похоже, это такпопробуйте выполнить все вызовы функций параллельно, которые вызывают некоторое отставание в начальное время приложения. Есть ли лучший подход для выполнения нескольких функций параллельно

Ответы [ 4 ]

0 голосов
/ 30 сентября 2019

Если альтернативой является использование ThreadPools, то вам следует использовать сопрограммы. Они созданы, чтобы сделать это проще. Кроме того, вы сэкономите немного памяти, так как будете делиться потоками с другими процессами.

Если вам нужен отдельный поток, который непрерывно работает в фоновом режиме. Тогда, возможно, поток - это путь, чтобы гарантировать, что его выполнение не прерывается ожидающей сопрограммой. Хотя эта проблема должна решаться изолированным однопоточным диспетчером (если он у вас есть).

Вы упоминали, что испытывали задержку? Было ли предотвращено это отставание, когда вы использовали пул потоков? Если это проблема, то запустите сопрограммы из другой сопрограммы. :)

0 голосов
/ 30 сентября 2019

Kotlin Co-рутины это путь.

Почему? :

  1. Они дешевы.
  2. Увеличивает читаемость кода.
  3. Настройка конфигурации меньше (по сравнению с RxJava) для простых задач.
0 голосов
/ 30 сентября 2019

попробуйте

 viewModelScope.launch{
            val function1Async=async{ function1()}
            val function2Async=async{function2()
            function1Async.await() 
            function2Async.await()
        }
0 голосов
/ 30 сентября 2019

конечно же, Kotlin Coroutines, потому что сопрограммы не обязательно связаны с каким-либо конкретным потоком. Сопрограмма может начать выполнение в одном потоке, приостановить выполнение и возобновить в другом потоке. Сопрограммы не управляются операционной системой. Они управляются на уровне пространства пользователя средой выполнения Kotlin.

...