Java ThreadPoolExecutor с SynchronousQueue отклоняет задачу, как этого избежатьJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Java ThreadPoolExecutor с SynchronousQueue отклоняет задачу, как этого избежать

Сообщение Anonymous »

Как убедиться, что предыдущая задача полностью выполнена и рабочий поток готов принять новую задачу.
На некоторых компьютерах такой код отклоняет вторую задачу:< /p>

Код: Выделить всё

ThreadPoolExecutor exe = ThreadPoolExecutor(1, 1, 0L, TimeUnit.SECONDS, new SynchronousQueue());
Future future = exe.submit(task1);
while (!future.isDone()) {
//do something, wait for result
sleep(1);
}
Future future = exe.submit(task2); // Sometimes it rejects the task
Я видел аналогичный вопрос, но он не решен (ThreadPoolExecutor загадочным образом отклоняет исполняемые файлы).
UPD: трассировка стека

Код: Выделить всё

java.util.concurrent.RejectedExecutionException: Task java.util.concurrent.ExecutorCompletionService$QueueingFuture@8c1e52e[Not completed, task = java.util.concurrent.Executors$RunnableAdapter@6cdbdc4f[Wrapped task = java.util.concurrent.FutureTask@2aa7cf9b[Not completed, task = com.my.example.DatabaseValue$$Lambda$1438/0x0000000840650440@6c918fb6]]] rejected from java.util.concurrent.ThreadPoolExecutor@3aca79dd[Running, pool size = 1, active threads = 0, queued tasks = 0, completed tasks = 592]
at java.base/java.util.concurrent.ThreadPoolExecutor$AbortPolicy.rejectedExecution(ThreadPoolExecutor.java:2055)
at java.base/java.util.concurrent.ThreadPoolExecutor.reject(ThreadPoolExecutor.java:825)
at java.base/java.util.concurrent.ThreadPoolExecutor.execute(ThreadPoolExecutor.java:1355)
at java.base/java.util.concurrent.ExecutorCompletionService.submit(ExecutorCompletionService.java:184)
...
Мне не удалось воспроизвести это на своих компьютерах, но на других такое случается.

Подробнее здесь: https://stackoverflow.com/questions/790 ... avoid-this
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»