#multithreading #exception #out-of-memory
Вопрос:
Ладно, это кажется каким-то безумием, но
- Мне нужен ThreadPoolExecutor, чтобы выбросить его из памяти для экспериментальных материалов
- Мне нужно, чтобы 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 ;
}