多線程的基本概念

進程:是一個正在執行中的程序,每個進程執行都有一個執行的順序。該順序是一個執行路徑,或者叫一個控制單元。
線程:就是進程中一個獨立的控制單元,線程在控制着進程的執行。安全

建立進程的兩種方式:
1.繼承thread類。
步驟:1.1定義繼承thread的類。
1.2定義overridethread類中的run方法。
1.3調用線程的start方法,該方法有兩個做用:啓用線程,調用run方法。
爲何要覆蓋run方法?
thread類描述了線程,該類定義了一個功能,用於存儲要運行的代碼,該存儲功能就是run方法。run方法存儲線程要運行的代碼。
2.繼承方式
步驟:
2.1定義類實現runnable接口
2.2覆蓋runnable接口中的run方法,將線程要運行的代碼存放在該run方法中。
2.3經過thread類創建線程對象。
2.4將runnable接口的子類丟向做爲實際的參數傳遞給thread類的構造函數。
爲何要將runnable接口的子類對象傳遞給thread的構造函數?
由於,自定義的run方法所屬的對象是runnable接口的子類對象,因此要讓線程去
指定指定對象的run方法,就必須明確該run方法所屬對象。多線程

實現方式和繼承方式的區別?
實現方式好處:避免了單繼承的侷限性。
在定義線程時,建議使用實現方式。ide

兩種方式區別:
繼承thread:線程代碼存放於thread子類的run方法中。
實現runnable:線程代碼存放在接口的子類的run方法中。
通常採用實現runnable接口的方式開發多線程。
多線程的安全問題:問題的緣由:當多條語句在操做同一個線程共享數據時,一個線程對多條語句只執行了一部分,尚未執行完,另一個線程參與進來執行,致使共享數據的錯誤。
解決辦法:
    對多條操做共享數據的語句,只能讓一個線程都執行完。在執行過程當中,其餘線程不能夠參與執行。函數

如何尋找同步代碼?
1.明確哪些代碼是多線程運行代碼
2.明確共享數據
3.明確多線程運行代碼中哪些語句是操做共享數據的。
解決方式:
1.同步代碼塊:synchronized(對象){須要同步代碼}
2.同步函數:把synchronized放在函數上便可,函數須要被對象調用,那麼函數都有一個所屬對象應用。spa

相關文章
相關標籤/搜索