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?