1. A computer implemented method of load balancing a multiprocessor computer system, comprising: determining a state of each of two or more processors, wherein the state includes at least one of a source state and a sink state; if at least one of the two or more processors is in the source state and at least one of the two or more processors is in the sink state, transferring at least one thread from a queue of a source state processor to a queue of a sink state processor, wherein the source state processor has at least one starving thread, and the sink state processor has no starving thread; and identifying a given one of the two or more processors as being in the source state in response to determining that a thread associated with the given processor has not executed on the given processor for greater than a preset starvation time limit, and that a time since the given processor was idle is greater than the preset starvation time limit.