Если я выполняю длительные задачи, Executor никогда не запускает новые потоки, если первая задача не завершена. Может кто-то, пожалуйста, помогите мне понять, почему и как я могу это исправить?Исполнитель не выполняет задачи, как ожидалось
import java.util.concurrent.ExecutorService;
import java.util.concurrent.LinkedBlockingQueue;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;
import org.junit.Test;
public class TestExecutor {
@Test
public void test() throws InterruptedException {
ExecutorService checkTasksExecutorService = new ThreadPoolExecutor(1, 10,
100000, TimeUnit.MILLISECONDS,
new LinkedBlockingQueue<Runnable>());
for (int i = 0; i < 20; i++) {
checkTasksExecutorService.execute(new Runnable() {
public void run(){
try {
System.out.println(Thread.currentThread().getName() + " running!");
Thread.sleep(10000);
} catch (Exception e) {
}
}
});
}
Thread.sleep(1000000);
}
}
Вы должны были смотреть на 'ThreadPoolExecutor' класс Javadoc :) –
@MarkoTopolnik javadoc не держит ответ! См. Мои правки – Bohemian
Как вы оцениваете? Вы видели мою цитату? Он точно предсказывает, что произойдет, и что изменится, чтобы исправить это. –