Java中的每段代碼都是從Thread
的一個實例中執行的。
如果您不寫自己的線程,則所有內容都將由java-main-thread
執行。
當Java虛擬機啓動時,通常會有一個非守護線程(通常會調用某個指定類的main方法)。 (從Thread了Java API)
但是您可以使用多個Thread
正穿過你的項目,使多線程和並行技術的使用你的機器上。
方法setPriority
可以用來給你調用這個方法的當前線程對象一個優先級。線程調度程序使用您的操作系統的優先級來根據它們的優先級爲線程提供CPU時間。因此,具有更高優先級的線程比具有更小優先級的線程更可能獲得CPU時間。
同樣,如果你不使用任何自制線程,你確實使用java-main-thread
。您始終可以通過使用Thread.getCurrentThread()
訪問當前的線程。
所以,如果你有自己的Thread類MyOwnThread extends Thread
,寫這樣的事:
MyOwnThread myOwnThread = new MyOwnThread();
myOwnThread.setPriority(...);
的myOwnThread
的優先級的影響。但如果你寫這樣的東西:
public static void main(String[] args) {
...
Thread.getCurrentThread().setPriority(...);
...
}
您正在影響java-main-thread
。
我的意思是,如果在main()中實例化一個Thread對象,然後在該對象上調用setPriority(),哪個優先級會改變,我創建的線程還是main()的? – Searcherer
優先級是在線程對象上調用'setPriority'時設置的整數值。它是一個實例方法,所以它影響它所調用的對象。我已經爲你編輯了我的答案。 –
Thx。所以,正如我上面評論的那樣,我在網頁上看到的內容似乎是錯誤的......。 – Searcherer