This week's book giveaway is in the Mac OS forum. We're giving away four copies of a choice of "Take Control of Upgrading to Yosemite" or "Take Control of Automating Your Mac" and have Joe Kissell on-line! See this thread for details.
Because you are allowing the threads to sleep alternatively you are giving the other thread to get its work done. In the program above i have not allowed the threads to sleep. Thus the thread with a greater priority keeps working. However note that priority is not the basis on which you should schedule your work. You should not expect that a thread with a higher priority will always get the cpu and a thread with a lower priority will never get the cpu. This is because of Time Slicing.