Мои концепции многопоточности слабы и пытаются учиться.
Я знаю, что в Java нельзя вызывать поток более одного раза:
Thread t = new Thread; //Some Runnable
t.start();
t.start(); //Illegal and throw Exception at runtime.
Насколько я знаю, он вызывает исключение, когда вы снова вызываете t.start()
, потому что связанный стек для потока уничтожается, когда он выходит из метода run()
и вы пытаетесь инициализировать вещи снова.
В этом случае, что я знаю о пуле потоков, это дает лучшую производительность & экономит время, потому что нет необходимости создавать новую тему (я читал в этом).
Если нет необходимости создавать новый поток в сценарии с пулом потоков, то как он будет работать с тем же потоком, который только что завершил свой метод run?
Я прочитал этот, и там говорится, что "Большинство реализаций исполнителя в java.util.concurrent используют пулы потоков, которые состоят из рабочих потоков. Этот тип потока существует отдельно от Runnable и Callable. задачи, которые он выполняет и часто используется для выполнения нескольких задач."
Итак, что такое рабочий поток, он отличается от обычных потоков Java?
С этой ссылкой я кое-что получил, но все еще не понял, какие вещи можно устранить, когда мы используем пул потоков, и почему он дает лучшую производительность, чем при использовании обычных потоков Java.
Итак, можем ли мы так сказать,
Тема состоит из трех частей,
- Создание (сообщая ОС, что это новый поток, создайте для него стек).
- Выполнить Runnable с помощью метода run().
- Уничтожение тем.
Таким образом, учитывая вышеупомянутые 3 шага, с пулами потоков шаг 1 и шаг 3 могут быть исключены после фиксированного количества созданных потоков. Будет выполнен только шаг 2 для каждой задачи, поэтому пул потоков быстрее? Можем ли мы так сказать? Я прав?