Как вернуть результат Executors.newFixedThreadPool на Кotlin
Читаю при помощи DAO - список из базы List<Currency>, код этот расположен внутри ViewModel.
private val db = AppDatabase.getInstance(getApplication())
private val dao = db!!.CurrencyDao()
private val service = Executors.newFixedThreadPool(1)
Таким методом
fun getLast():List<Currency>
{
var x:List<Currency> = emptyList()
service.submit {
x = dao.getLast()
}
service.shutdown()
return x
}
Но из за того что поток выполняется в фоне не успевает возвращаться результат. Каким способом можно принудительно дождать результат выполнения потока.
Ответы (1 шт):
Автор решения: Oleg Aleksandrov
→ Ссылка
Вам нужно явно вызвать ожидание завершение задачи, например это можно сделать следующим образом:
val task = service.submit {
x = dao.getLast()
}
// that method waits if necessary for the computation to complete, and then retrieves its result.
task.get()
service.shutdown()