I think the code could be simplified a bit by pulling out a cpuTime(Thread) method on this class, which returns the actual cpu time estimate if supported, or 0 otherwise, and then having every runnable thread participate in the max-finding code.