1. 程式人生 > >java 多執行緒基礎2

java 多執行緒基礎2

 

 

 

多執行緒(加入執行緒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)

:該狀態不同於WAITING,它可以在指定的時間後自行返回。

6. 終止(TERMINATED):表示該執行緒已經執行完畢。