Сбой RejectedExecutionException с использованием Executors - PullRequest
0 голосов
/ 26 августа 2018

У меня сбой на клиенте (с помощью Samsung 8 Android 7.0).Это похоже на приложение Android, которое выходит из строя при превышении пула потоков 9 и задач в очереди 128 , за исключением того, что мне кажется, что у меня нет задачи с поставленными в очередь задачами из-за способа установки размера пула.Samsung 8 имеет 8 процессоров, верно?

Что здесь может пойти не так?

Вывод сбоя:

java.lang.RuntimeException: 
  at android.os.AsyncTask$3.done (AsyncTask.java:318)
  at java.util.concurrent.FutureTask.finishCompletion (FutureTask.java:354)
  at java.util.concurrent.FutureTask.setException (FutureTask.java:223)
  at java.util.concurrent.FutureTask.run (FutureTask.java:242)
  at android.os.AsyncTask$SerialExecutor$1.run (AsyncTask.java:243)
  at java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1133)
  at java.util.concurrent.ThreadPoolExecutor$Worker.run (ThreadPoolExecutor.java:607)
  at java.lang.Thread.run (Thread.java:762)
Caused by: java.util.concurrent.RejectedExecutionException: 
  at java.util.concurrent.ThreadPoolExecutor$AbortPolicy.rejectedExecution (ThreadPoolExecutor.java:2049)
  at java.util.concurrent.ThreadPoolExecutor.reject (ThreadPoolExecutor.java:814)
  at java.util.concurrent.ThreadPoolExecutor.execute (ThreadPoolExecutor.java:1360)
  at java.util.concurrent.AbstractExecutorService.submit (AbstractExecutorService.java:111)
  at com.narb.chkapp.Disc.ScanAsync.isOpen (ScanAsync.java:100)
  at com.narb.chkapp.Disc.ScanAsync.doInBackground (ScanAsync.java:215)
  at com.narb.chkapp.Disc.ScanAsync.doInBackground (ScanAsync.java:36)
  at android.os.AsyncTask$2.call (AsyncTask.java:304)
  at java.util.concurrent.FutureTask.run (FutureTask.java:237)

Java-код:

@Override
    protected Void doInBackground(String... arg0) {
        int MAXTHREADS = Runtime.getRuntime().availableProcessors();
        MAXTHREADS = 15 * MAXTHREADS;
        executor = Executors.newFixedThreadPool(MAXTHREADS);
...