天天看點

Java多線程

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···

本文出自 “” 部落格,請務必保留此出處