这个。。你不必纠结。。
深入说的话,其实。。很深。。
首先说 线程优先级,并不能保证优先级高的先运行,也不保证优先级高的更多的分配CPU时间,只是对系统的建议而已,到底运行哪个,是操作系统决定的,都不是java说了算的。
另外java只能保证在线程内部看起来是顺序执行你的代码的,并不能保证从其他线程看来这个是按照你编码顺序执行的。。
优先级高不代表说一定是优先级最高的运行完了再让优先级地的运行。否则那样多线程就没意义了。
优先级高就是说同等条件下我运行的概率会比优先级低的高,至于具体怎么分配,这样看虚拟机的策略。但是肯定不会是像你想的那样,优先级高的运行完才运行优先级低的
设置优先级只是让CPU选择优先级高的执行机会大一点,不代表必定执行的次数多,就像一个袋子有3个红球,2个蓝球,摸十次,并不代表红球摸到的次数多,只是说被摸到的机率大而已