class MyThread extends Thread{
public MyThread(String name) {
super(name);
}
public void run(){
for (int i=0; i<5; i++) {
System.out.println(Thread.currentThread().getName()
+"("+Thread.currentThread().getPriority()+ ")"
+", loop "+i);
}
}
};
public class Demo {
public static void main(String[] args) {
System.out.println(Thread.currentThread().getName()
+"("+Thread.currentThread().getPriority()+ ")");
Thread t1=new MyThread("t1"); // t1
Thread t2=new MyThread("t2"); // t2
t1.setPriority(1); // t1 priority 1
t2.setPriority(10); //t2 priority 10
t1.start(); // start t1
t2.start(); // start t2
}
}
Wenn ich das Programm ausführen, haben einige Male habe ich die Ausgabe wie folgt:
//Output1
main(5)
t2(10), loop 0
t2(10), loop 1
t2(10), loop 2
t2(10), loop 3
t2(10), loop 4
t1(1), loop 0
t1(1), loop 1
t1(1), loop 2
t1(1), loop 3
t1(1), loop 4
Manchmal habe ich eine Ausgabe wie folgt:
//Output2
main(5)
t1(1), loop 0
t1(1), loop 1
t1(1), loop 2
t1(1), loop 3
t1(1), loop 4
t2(10), loop 0
t2(10), loop 1
t2(10), loop 2
t2(10), loop 3
t2(10), loop 4
In einigen anderen Gelegenheiten, die ich ausgegeben habe, wo t1 zuerst beginnt, und t2 beginnt, bevor t1 die gesamte Ausgabe beendet.
Ich dachte output1
macht mehr Sinn als “Threads with higher priority are executed in preference to threads with lower priority.” Wie können wir die Gründe hinter diesem Beispiel verstehen?
Sie könnten von [this] (http://www.javamex.com/tutorials/threads/priority_what.shtml) – DSlomer64