我有以下代码:
class Counter2 extends Thread {
public Counter2(String s) {
super(s);
};
public void run() {
Thread thread = currentThread();
for (long count = 0; count <= 1; ++count)
System.out.println(thread + "COUNT:" + count);
}
}
public class ThreadTest {
public static void main(String[] args) {
Thread secondThread = new Counter2("second");
Thread thirdThread = new Counter2("third");
thirdThread.setPriority(8);
secondThread.start();
thirdThread.start();
}
}
运行程序时,我希望得到以下输出:
主题[第三,如图8所示,主] COUNT:0
主题[第三,如图8所示,主] COUNT:1
主题[第二,如图5所示,主] COUNT:1
主题[第二,如图5所示,主] COUNT:0
相反,我每次执行程序时都会以不同的顺序得到不同的结果,似乎java同时在两个线程上执行该方法,但我认为它会优先考虑具有更高优先级的方法?
答案 0 :(得分:3)
除非您明确地同步访问以确定操作的顺序,否则您不能期望来自此类线程程序的任何特定输出,如果您这样做,则优先级根本不重要。
设置优先级并不能保证特定的顺序,它只是尝试优先考虑一个线程与另一个线程的优先级,但有很多事情会影响线程的执行,而你不太可能看到你的内容。 #39;希望。
如果您曾经在某种VIP或优先级线上,并且您已经注意到非VIP人员的服务速度更快,那么这也发生在计算机内部。