Есть ли в ThreadPool локальная очередь задач для рабочих потоков?
Решил освежить свои знания о работе пула потоков. В своих конспектах нашёл следующую схему работы пула потоков
То есть судя по этой схеме алгоритм пула потоков следующий: у нас набор заготовленных потоков, есть глобальная очередь задач. Новая задача помещается в очередь, извлекается рабочим потоком, обрабатывается, поток возвращается в пул.
Но в чём загвоздка, я стал читать Рихтера и обнаружил, что потоки из пула работают совсем по другому. К всему выше написанному добавляется локальная очередь задач для каждого потока. И получается, что работа происходит по другому: сначала рабочий поток проверяет свою локальную очередь и локальные очереди других потоков, если в них нет задач, то только тогда идёт в главную очередь и достаёт задачу из неё, обрабатывает её и уходит в режим ожидания.
Схема с интернета
Cхема которую я взял с интернета похоже на мою.
Поясните, пожалуйста, как всё-таки пул потоков управляет своими потоками. Может Рихтер уже устарел, и всё давно не так))
UPD
В какой момент в локальной очереди потока будет добавлена задача? У Рихтера ничего не сказано про это не сказано