創建線程的第一種:繼承Thread類.
步驟:
1,定義類繼承Thread.
2,複寫Thread類中的run方法.
目的:將自定義代碼存儲在run方法.讓線程運行.
3,創建線程的子類對象.
4,調用線程的start方法,
該方法兩個作用:啓動線程,調用run方法.
創建線程的第二種方式:實現Runnable接口
步驟:
1,定義類實現Runnable接口
2,覆蓋Runnable接口中的run方法.
將線程要運行的代碼存放在該run方法中.
3,通過Thread類建立線程的對象.
4,將Runnable接口的子類對象作爲實際參數傳遞給Thread類的構造函數.
爲什麼要將Runnable接口的子類對象傳遞給Thread的構造函數.
因爲,自定義的run方法所屬的對象是Runnable接口的子類對象.
所以要讓線程去執行指定對象的run方法.就必須明確該run方法所屬對象.
5,調用Thread類的start方法開啓線程並調用Runnable接口子類的run方法.實現方式和繼承方式的區別
1,繼承方式的代碼比較簡單.( 在沒有父類時,使用繼承方式.)
實現方式好處:避免了單繼承的侷限性.
在定義線程時,建議使用實現方式.
2,存放代碼位置不一樣
繼承Thread:線程代碼存放Thread子類的run方法中.
實現Runnable,線程代碼存在接口的子類的run方法中.