JAVA_SE複習(多線程)

線程多線程

1.兩種建立線程的方式都有自身的優勢。spa

實現 Runnable 接口的優勢:線程

從面向對象的設計觀點看,Thread 類嚴格來說是一個虛擬CPU 的封裝,所以只有要改變或擴展該CPU 模型的行爲時才應該繼承這個類。設計

繼承Thread 的優勢是:代碼會獲得簡化。orm

繼承Thread 的缺點是:Java 只容許單繼承,若是已經繼承了Thread 類,則不能再繼承其餘類例如JFrame,這使得一些狀況下不得不採用實現Runnable 的方法。對象

2.線程的優先級繼承

默認狀況下,線程的優先級是5 也就是Thread.NORM_PRIORITY。值得注意的是,即便當您爲一個線程(線程A)指定最高優先級,另外一個線程(線程B)指定最低優先級,運行程序的時候,線程A 也不是必定優先於線程B 執行的。線程的優先級只是代表在相同狀況下,優先級高的線程有更大的概率搶佔CPU接口

3. 線程的基本控制ci

A.sleep get

a.sleep 方法使當前線程(即調用該方法的線程)暫停執行一段時間,讓其餘線程有機會繼續執行,但它並不釋放對象鎖。也就是若是有synchronized 同步塊,其餘線程仍然不一樣訪問共享數據。注意該方法要捕獲異常。

b.即便當一個線程設置爲最高優先級,當它調用sleep 會終止一段時間,低優先級的線程反而有機會先執行:

4.多線程的兩種使用方式:

A.使用Runnable

構建一個Runnerable接口的實現類,類中實現它的run方法

new一個thread對象  runnerable對象做爲參數放入其中

最後,thread對象.star();

B. 使用thread

構建一個thread的繼承類,類中實現它的run方法

而後,利用多態性:Thread t1 = new MyThread1();

最後,thread對象.star();【t1.star()

5. join 方法

執行join方法的線程必須所有都運行玩才能運行其餘的線程。

join 方法使調用該方法的線程在此以前執行完畢,也就是等待調用該方法的線程  執行完畢後再往下繼續執行。注意該方法也要捕獲異常。



相關文章
相關標籤/搜索