1.簡單Java多線程例子(繼承Thread)
某一次的執行結果為:
B運作...0
B運作...1
B運作...2
C運作...0
A運作...0
C運作...1
B運作...3
C運作...2
A運作...1
C運作...3
B運作...4
C運作...4
A運作...2
A運作...3
A運作...4
2.簡單Java多線程例子(實作Runnable接口)
某一次的執行結果為
線程A運作...0
線程A運作...1
線程A運作...2
線程B運作...0
線程B運作...1
線程A運作...3
線程C運作...0
線程A運作...4
線程B運作...2
線程B運作...3
線程C運作...1
線程B運作...4
線程C運作...2
線程C運作...3
線程C運作...4
Thread也是實作Runnable接口的,Thread中的run方法調用的是Runnable接口的run方法。Thread和Runnable都實作了run方法,這種操作模式其實就是代理模式。
Thread和Runnable的差別:
如果一個類繼承Thread,則不适合資源共享。但是如果實作了Runable接口的話,則很容易的實作資源共享。
如果是一個買票系統,如果count表示的是車票的數量,使用Runnable接口
1号視窗正在買票5
3号視窗正在買票3
2号視窗正在買票4
3号視窗正在買票1
1号視窗正在買票2
總結:
實作Runnable接口比繼承Thread類所具有的優勢:
1):适合多個相同的程式代碼的線程去處理同一個資源
2):可以避免java中的單繼承的限制
3):增加程式的健壯性,代碼可以被多個線程共享,代碼和資料獨立。
建議盡量使用Runnable接口
某一次的執行結構為
A
B
Thread-0
如果我們沒有指定名字的話,系統自動提供名字。
提醒一下大家:main方法其實也是一個線程。在java中是以的線程都是同時啟動的,至于什麼時候,哪個先執行,完全看誰先得到CPU的資源。
在java中,每次程式運作至少啟動2個線程。一個是main線程,一個是垃圾收集線程。因為每當使用java指令執行一個類的時候,實際上都會啟動一個JVM,每一個JVM實習在就是在作業系統中啟動了一個程序。
判斷線程是否啟動
線程啟動之前---》false
線程啟動之後---》true
主線程也有可能在子線程結束之前結束。并且子線程不受影響,不會因為主線程的結束而結束。
To be continued···
本文出自 “” 部落格,請務必保留此出處