Wenn eine neue Aufgabe in Verfahren vorgelegt
execute(java.lang.Runnable)
und weniger alscorePoolSize
Threads laufen, ein neuer Thread erstellt wird, um die Anforderung zu verarbeiten, auch wenn andere Worker-Threads im Leerlauf befinden.ThreadPoolExecutor - Kern und maximale Poolgrößen
1) Warum muss ein neuer Thread erstellt werden, um die Anfrage zu bearbeiten, wenn es inaktive Threads gibt?
Wenn es mehr als
corePoolSize
sind aber weniger alsmaximumPoolSize
Threads ausgeführt wird, ein neuer Thread wird nur erstellt, wenn die Warteschlange voll ist.
2) Ich verstehe den Unterschied zwischen corePoolSize
und maximumPoolSize
hier nicht. Zweitens, wie kann eine Warteschlange voll sein, wenn Threads weniger als sind? Die Warteschlange kann nur voll sein, wenn die Threads größer oder gleich sind. Ist es nicht?
1. Wie execute() wissen, dass Ihr andere Worker-Threads inaktiv sind? Hast du sie zurück in den Pool gebracht, wenn du damit fertig bist? –
2. Es klingt wie der ThreadPoolExecutor versucht, einen Pool von verwendbaren Threads größer als corePoolSize aber kleiner als maximumPoolSize zu verwalten. –
@RobertHarvey bitte posten dies als Antwort. – zEro