多線程基礎小結

1 實現方式

線程的實現有2種方式:

  • 繼承Thread;

  • 實現Runnable;(推薦使用)


2 實現Runnable好處

  • 將線程的任務從線程的子類中分離出來,進行了單獨的封裝。按照面向對象的思想將任務封裝成對象。

  • 避免了Java單繼承的侷限性;

  • 爲後期的代碼功能擴展性提供便利。


3 兩種線程方式區別

  • 繼承Thread:線程代碼存放Thread子類run方法中;

  • 實現Runnable,線程代碼存在接口的子類的run方法;

  • 在多線程中,Thread爲多個線程對象,而Runnable只有一個Runnable對象。


4 線程安全問題的產生原因

  • 多線程在操作共同數據;

  • 操作共享數據的代碼有多條。


5 解決安全問題

1 思路

就是將多條操作共享數據的代碼進行封裝,當有線程執行這些代碼的時候,其他的線程不可參與其中。

2 解決方案

使用synchronized關鍵字。

  • 同步代碼塊:鎖對象爲Obj;建議使用。

  • 非靜態同步函數:this,當前類對象;

  • 靜態同步函數:XXX.class 該函數所屬字節碼文件對象,不可以用getClass()表示(非靜態方法,不可用在靜態方法中)。

6 同步的利弊

  • 好處:解決了線程的安全問題;

  • 弊端:佔用CPU內存資源,多次判斷鎖,相對效率低,但在可接受範圍之內;

7 同步的前提

必須有多線程同時使用一個公共資源。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章