używam ThreadPoolExecutor
jak poniżej:java 8 threadPoolExecutor stucks po n zadań z instrukcji return
ThreadPoolExecutor pool = new ThreadPoolExecutor(cores, 50, 30L,
TimeUnit.SECONDS, new ArrayBlockingQueue<>(10));
a:
pool.execute(()->{
//code goes here
if(some condition){
return;
}
//code goes here
})
A kiedy ten blok z instrukcji return jest włączona, wszystkie te zadania dostaje utknął w TPE. TPE mówi, że jest w pełni załadowany i zawsze wyrzuca RejectedExecutionException
wyjątek
Nie mogę zrozumieć, dlaczego tak się dzieje. Na przykład, jeśli masz pulę wielkości 10, a masz 100 zadań, 10 z nich będzie pasować, jeśli sekcja, nie zaakceptujesz 101. zadania, wszystkie następne zadania zostaną odrzucone. Czemu?
Trudno powiedzieć, co poszło nie tak na podstawie tego opisu ... czy wykonano któreś z przesłanych zadań? może jest jakiś błąd w twoim kodzie zadań i są one proste zatrzymane ... – nukie
Właściwie nie zaakceptujesz 11. zadania, ponieważ kolejka ma rozmiar 10 – Antoniossss