combine update and balance for BalancingThreadPoolExecutor, extract ThreadProfiler interface, switch to grabbing actual Thread wait + block timing, create a new helper class