Presumably it's not fine grained enough. Maybe you don't want to force your
thread to always wait 1 second between iterations of a loop, but you don't mind if it does because other threads are busy.
I like to think yield() should be along the lines of "sleepUntilMyNextSliceIfThereAreThreadsInReadyState". If the rest of the threads are all sleeping or pending, then yield() should more-or-less do nothing.