Я использую библиотеку очереди заданий, где вы определяете Job
и отправляете их в JobManager
. У JobManager
есть ThreadGroup
с работниками, которые вытаскивают Job
из очереди и вызывают Job.onRun()
.
Количество потоков задается путем указания максимального и минимального количества потоков, коэффициента загрузки (сколько незавершенных заданий может иметь рабочий поток перед созданием нового) и тайм-аута простоя для любого из потоков выше мин. Таким образом, run()
рабочего потока завершится, если у него нет новых заданий и достигнут тайм-аут простоя.
В некоторых Job
я использую библиотеки, которые предоставляют только асинхронный API. Безопасно ли использовать их в onRun()?
Например, если я хочу сделать сетевой запрос, который принимает обратный вызов, который дает мне ответ, будет ли вызван обратный вызов:
@Override
public void onRun() throws Throwable {
client.doRequest(request, new Callback() {
@Override
public void onRequestComplete(Response response) {
//is this guaranteed to get called?
}
});
//since we now return from onRun() will onRequestComplete() get called?
}