что вызывает исключение ThreadPoolExecutor из памяти и исключение RejectedExecutionException?

#multithreading #exception #out-of-memory

Вопрос:

Ладно, это кажется каким-то безумием, но

  1. Мне нужен ThreadPoolExecutor, чтобы выбросить его из памяти для экспериментальных материалов
  2. Мне нужно, чтобы ThreadPoolExecutor выбросил исключение RejectedExecutionException для экспериментальных материалов

Я попытался поиграть с размером кучи , размером пула потоков и размером ограниченной LinkedBlockingQueue, но, похоже, компьютер пытается избежать этих двух исключений, даже если максимальный размер кучи составляет 512 МБ. Входными данными являются большие онтологии.

 BlockingQueue<Runnable> workQueue = new LinkedBlockingQueue<>();
          //RejectedTaskHandler handler=new RejectedTaskHandler(); 
          ThreadPoolExecutor executor = new ThreadPoolExecutor(
                              numThread, //corePoolSize
                              Runtime.getRuntime().availableProcessors(),    //maximumPoolSize
                              0L,
                              TimeUnit.SECONDS,
                              workQueue
                             
                              );
 

вот цикл отправки задач :

 while(indexThread1<list1.getThreadNumforAxioms(numThread, axioms1))
                {
                    executor.submit(new RunTask(reasoner, manager, list1, groups.get(indexThread1), 1));

                    indexThread1  ;
                }