java 多執行緒基礎2
阿新 • • 發佈:2018-11-09
多執行緒(加入執行緒join)
thread.join(); 被.join()的執行緒優先執行
多執行緒(執行緒優先順序Priority)
Thread.setPriority(1-10)執行緒預設優先順序是5。執行緒優先順序的範圍是:1-10。執行緒優先順序高僅僅表示執行緒獲取的 CPU時間片的機率高,但是要在次數比較多,或者多次執行的時候才能看到比較好的效果。
多執行緒(守護執行緒setDaemon)
thread.setDaemon(bool)將該執行緒標記為守護執行緒(true)或使用者執行緒(false)。 當正在執行的執行緒都是守護執行緒時,Java 虛擬機器退出。 該方法必須在啟動執行緒前呼叫。執行緒預設是使用者執行緒 當用戶執行緒都執行完畢 守護執行緒自動結束
多執行緒(禮讓執行緒執行緒 yield)
Thread. yield():暫停當前正在執行的執行緒物件,並執行其他執行緒。讓多個執行緒的執行更和諧,但是不能靠它保證一人一次。
public class ThreadYield extends Thread { @Override public void run() { for (int x = 0; x < 100; x++) { System.out.println(getName() + ":" + x); Thread.yield(); } }
多執行緒的狀態
1. 初始(NEW):新建立了一個執行緒物件,但還沒有呼叫start()方法。
2. 執行(RUNNABLE):Java執行緒中將就緒(ready)和執行中(running)兩種狀態籠統的稱為“執行”。
執行緒物件建立後,其他執行緒(比如main執行緒)呼叫了該物件的start()方法。該狀態的執行緒位於可執行執行緒池中,等待被執行緒排程選中,獲取CPU的使用權,此時處於就緒狀態(ready)。就緒狀態的執行緒在獲得CPU時間片後變為執行中狀態(running)。
3.阻塞(BLOCKED):表示執行緒阻塞於鎖。
4.等待(WAITING):進入該狀態的執行緒需要等待其他執行緒做出一些特定動作(通知或中斷)。
5.超時等待(TIMED_WAITING)
6. 終止(TERMINATED):表示該執行緒已經執行完畢。