hallo
das problem haben vermutlich alle programmierer, die sich von ihrem gesunden hausverstand leiten lassen.
laut spezifikation der vm ist explizit nicht definiert, welche auswirkung das setzen der priorität auf den scheduler hat. während z.b. die uralt-microsoft-vm das tatsächlich erwartungskonform umgesetzt hat (ist nur keinem aufgefallen, weil die praktisch keiner verwendet hat), setzt die sun-vm voraus, dass der programmierer seine programme genauso programmiert, wie es bei kooperativem multitaskting notwendig ist. sprich: die einzelnen threads müssen sich selber darum kümmern, dass sie sich nicht in die quere kommen. es gibt keinerlei garantie dafür, dass ein thread mit einer hohen priorität häufiger drannkommt als ein niedrigpriorisierter. die spezifikation der vm garantiert nicht mal, dass der hochpriorisierte überhaupt drannkommt, obwohl es praktisch alle implementierungen jeden thread rannlassen.
die brachialmethode zum sicherstellen, dass ein thread mit niedriger priorität den rest nicht blockiert, ist, ihn an strategisch günstigen punkten im code mittels Thread.sleep() mal kurz schlafen zu legen (recht im millisekundenbereich).
lg
erwin