Thread及Runnable執行緒

多開一個執行緒-extends Thread

若只要多開一個執行緒,繼承Thread就可以了。要執行的功能放在run()方法內。

public class Horse extends Thread {
    @Override
    public void run(){
        ...
    }
}

要使用此Thread物件,就new出實例來

Horse horse = new Horse();
horse.start();

多執行緒-implements Runnable

若需要多個執行緒,就實作Runnable介面。同樣的,執行功能放在run()方法。

public class HorseRunnable implements Runnable {
    @Override
    public void run(){
        ...
    }
}

若要使用Runnable物件,需要先new出Runnable物件,再用此物件產生Thread物件。

三P馬的賽馬範例

目前有三匹馬,分別是三個執行緒,而main執行緒主要負責計算賽馬名次。

開個賽馬場囉~

最後發現main執行緒會比其他三匹馬更早結束,為了讓main(裁判)等待三匹馬完成,使用join()方法來等待結果。

如此一來便會等待馬匹跑完以後,main執行緒才會結束。

賽馬排名

新增紀錄排名的集合

yield()和sleep()會暫停目前工作,進入等待隊列(Queue)

資源鎖定synchronized

限制同一時間只能有一個執行緒執行該方法,可以透過同步方法或同步區塊達成。

同步方法:

同步區塊:

Last updated

Was this helpful?