In a multi-threaded processor, thread priority variables are set up in
memory. The actual assignment of thread priority is based on the
expiration of a thread precedence counter. To further augment, the
effectiveness of the thread precedence counters, starting counters are
associated with each thread that serve as a multiplier for the value to
be used in the thread precedence counter. The value in the starting
counters are manipulated so as to prevent one thread from getting undue
priority to the resources of the multi-threaded processor.