Tôi đang sử dụng ThreadPoolExecutor
như sau:java 8 stucks threadPoolExecutor sau N nhiệm vụ với lệnh return
ThreadPoolExecutor pool = new ThreadPoolExecutor(cores, 50, 30L,
TimeUnit.SECONDS, new ArrayBlockingQueue<>(10));
và:
pool.execute(()->{
//code goes here
if(some condition){
return;
}
//code goes here
})
Và khi khối này với lệnh return được kích hoạt, tất cả những nhiệm vụ được bị kẹt trong TPE. TPE nói rằng nó được tải đầy đủ và luôn ném RejectedExecutionException
ngoại lệ
Tôi không thể hiểu tại sao điều đó xảy ra. Ví dụ: nếu bạn có một nhóm có kích thước 10 và bạn có 100 nhiệm vụ, 10 trong số đó sẽ khớp nếu phần, bạn sẽ không chấp nhận nhiệm vụ thứ 101, tất cả các tác vụ tiếp theo sẽ bị từ chối. Tại sao?
rất khó để biết điều gì đã xảy ra bởi mô tả này ... là bất kỳ tác vụ đã gửi nào được thực thi? có thể có một số loại lỗi trong mã nhiệm vụ của bạn và chúng đơn giản bị dừng lại ... – nukie
Thực ra bạn sẽ không chấp nhận nhiệm vụ thứ 11 khi hàng đợi có kích thước 10 – Antoniossss