A method with a multiprocessor data processing system including a plurality of processors, and a single execution queue of multiple threads from which threads are dispatched for execution by any said plurality of processors in a priority order, for establishing said priority order, said method comprising:
- (a) determining whether a current executing thread may still be run on a selected one of said plurality of processors;
- (b) in response to said current executing thread being runnable, placing said current executing thread on said single execution queue;
- (c) in response to an availability of said selected one of said plurality of processors selecting a thread having the highest priority on said single execution queue;
- (d) determining whether said current executing thread has the same priority as said thread having highest priority selected from said single execution queue;
- (e) upon determining said current executing thread and said highest priority thread are equal, running said current executing thread;
- (f) otherwise, if said highest priority thread is greater in priority than said current executing thread, determining whether a thread having affinity has the same priority as said highest priority thread, if said highest priority thread;
- and
- (g) running said affinity thread if equal to said thread having highest priority.