Próbuję zrozumieć, jak działa work stealing w Javie. Czy mógłby ktoś powiedzieć, czy dobrze myślę?
W executorze otrzymanym z Executors.newFixedThreadPool(...)
jest tak, że jeśli nowe zadanie trafia do executora i wszystkie wątki są zajęte, to executor ustawia je w kolejce do tak jakby następnego wątku na liście. Jeśli któryś z wątków skończy pracę wcześniej niż ten, do którego trafiło zadanie, to nic się nie stanie - zadanie dalej będzie czekało aż skończy pracować ten wątek, do którego zostało przydzielone. W executorze otrzymanym z Executors.newWorkStealingPool(...)
zadanie jest przydzielane w ten sam sposób, z tymże jeśli któryś z wątków skończy wcześniej, to ten wątek może przejąć to zadanie.