class RecoverObjectsBInObjectAThread extends Thread {
int id;//ID is for logs printing.
ObjectA objectA;
RecoverObjectsBInObjectAThread(int id, ObjectA objectA) {
this.id = id;
this.objectA= objectA;
}
@Override
public void run() {
recoverObjectsBInObjectA(objectA, id);
}
}
private void recoverObjectsBInObjectsA() {
int id = 0;
List<RecoverObjectsBInObjectAThread> threadList= new ArrayList<>();
for (ObjectA objectA: model.getObjectsA()) {
threadList.add(new RecoverObjectsBInObjectAThread(id, objectA));
id++;
}
for (RecoverObjectsBInObjectAThread thread: threadList)
thread.start();
for (RecoverObjectsBInObjectAThread thread : threadList) {
try {
thread.join();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
System.out.println("Out of for.");//Comentarios internos a borrar.
// DO STUFF WITH ALL THE OBJECTS B
}
private void recoverObjectsBInObjectA(ObjectA objectA, final int id) {
Call<ResponseRecoverObjectsB> call;
call = modeloHome.recoverObjectsBinObjectACall(objectA.getId());
//LOG SAYING WHAT THREAD HAS ARRIVED 1
call.enqueue(new Callback<ResponseRecoverObjectsB>() {
@Override
public void onResponse(@NotNull Call<ResponseRecoverObjectsB> call, @NotNull retrofit2.Response<ResponseRecoverObjectsB> response) {
ResponseRecoverObjectsB objectsBrecovered = response.body();
//LOG SAYING WHAT THREAD HAS ARRIVED 2
//STRORE OBJECT B IN MODEL AND DO STUFF
}
//Si hay error al recibir la respuesta
@Override
public void onFailure(@NotNull Call<ResponseRecoverObjectsB> call, @NotNull Throwable t) {
//LOG SAYING WHAT THREAD HAS ARRIVED 3
//DO ERROR STUFF
}
});
}
Когда этот код выполняется, все потоки поступают в первый журнал, и ни один поток не поступает во второй или третий поток, и выдает мне такую ошибку:
W/zygote: Got a deoptimization request on un-deoptimizable method void libcore.io.Linux.connect(java.io.FileDescriptor, java.net.InetAddress, int)
Вызов модернизации работает нормально в основном потоке. Я попытался выполнить вызов с помощью функции выполнения модификации (функция synchronus), и она работает, но я не знаю, лучший ли это способ сделать то, что я хочу.