從thread類中,我們可以看到類中預先定義了三個優先級。
通過getpriority可以看到新建線程的默認等級。
public class ExtendsThread {
public static void main(String[] args) {
MyThread c = new MyThread("線程C");
int priority = c.getPriority();
System.out.println(priority);
}
}
class MyThread extends Thread {
private String title;
public MyThread(String title) {
this.title = title;
}
@Override
public void run() {
for(int x = 0; x < 5 ; x++) {
System.out.println(this.title + "運行,x = " + x);
}
}
}
我們可以通過setpriority進行優先級設置。
public static void main(String[] args) {
MyThread a = new MyThread("線程A");
MyThread b = new MyThread("線程B");
MyThread c = new MyThread("線程C");
b.setPriority(1);
a.setPriority(10);
c.setPriority(10);
a.start();
b.start();
c.start();
}
我們查看運行結果。
發現即使線程B設置的優先級很低,其仍然可以執行。
我們可以得到如下的結論:cpu分配資源,在控制台上並不能看出,而且,優先級低的並不代表一定要等到優先級高的運行完才能運行,只是cpu分配的資源少了而已。