Итак, я застрял на довольно простой Java-вещи.
А именно, у меня есть iteration
, который должен перейти к следующему циклу после завершения inner class
. Но поскольку inner class
занимает много времени, а variables
, к которому можно получить доступ в inner class
, должно быть final
, меня это RejectedExecutionException
.
java.util.concurrent.RejectedExecutionException: Task android.os.AsyncTask$3@290074 rejected from java.util.concurrent.ThreadPoolExecutor@d50b99d[Running, pool size = 17, active threads = 17, queued tasks = 128, completed tasks = 42]
Вот упрощенное решение, которое породило исключение.
for (int i = 0; i < 10;i++) {
String[] cmd = { "-i", imageToBeFiltered.toString(), "-filter_complex", filters[loopCounter], imageWithFilter.toString()};
ffmpeg.execute(cmd, new ExecuteBinaryResponseHandler() {
@Override
public void onSuccess(String message) {
super.onSuccess(message);
//Continue loop only if it has reached onSuccess or onFailure
}
@Override
public void onFailure(String message) {
super.onFailure(message);
//Continue loop only if it has reached onSuccess or onFailure
}
});
}
}
При выполнении обычного fori-loop
он не всегда ждет окончания всех terminal calls
и просто продолжается.