一、繼承thread類
(1).首先定義乙個類去繼承thread父類,重寫父類中的run()方法。在run()方法中加入具體的任務**或處理邏輯。
(2).直接建立乙個threaddemo2類的物件,也可以利用多型性,變數宣告為父類的型別。
(3).呼叫start方法,執行緒t啟動,隱含的呼叫run()方法。
二、實現runnable介面
(1).定義乙個類實現runnable介面,重寫介面中的run()方法。在run()方法中加入具體的任務**或處理邏輯。
(2).建立runnable介面實現類的物件。
(3).建立乙個thread類的物件,需要封裝前面runnable介面實現類的物件。(介面可以實現多繼承)
(4).呼叫thread物件的start()方法,啟動執行緒
區別 採用繼承thread類方式:
(1)優點:編寫簡單,如果需要訪問當前執行緒,無需使用thread.currentthread()方法,直接使用this,即可獲得當前執行緒。
(2)缺點:因為執行緒類已經繼承了thread類,所以不能再繼承其他的父類。
採用實現runnable介面方式:
(1)優點:執行緒類只是實現了runable介面,還可以繼承其他的類。在這種方式下,可以多個執行緒共享同乙個目標物件,所以非常適合多個相同執行緒來處理同乙份資源的情況,從而可以將cpu**和資料分開,形成清晰的模型,較好地體現了物件導向的思想。
(2)缺點:程式設計稍微複雜,如果需要訪問當前執行緒,必須使用thread.currentthread()方法。
其他:
使用實現runnable介面方式建立執行緒可以共享同乙個目標物件(treaddemo1 tt=new treaddemo1();),實現了多個相同執行緒處理同乙份資源。
然後再看一段來自jdk的解釋:
runnable
介面應該由那些打算通過某一線程執行其實例的類來實現。類必須定義乙個稱為run
的無引數方法。
設計該介面的目的是為希望在活動時執行**的物件提供乙個公共協議。例如,thread
類實現了runnable
。啟用的意思是說某個執行緒已啟動並且尚未停止。
此外,runnable
為非thread
子類的類提供了一種啟用方式。通過例項化某個thread
例項並將自身作為執行目標,就可以執行實現runnable
的類而無需建立thread
的子類。大多數情況下,如果只想重寫run()
方法,而不重寫其他thread
方法,那麼應使用runnable
介面。這很重要,因為除非程式設計師打算修改或增強類的基本行為,否則不應為該類建立子類。
java當中實現執行緒的兩種方法
1,繼承thread類,然後重寫run方法 2,實現runnable介面,然後重寫run方法 兩種方法的區別於聯絡 平時我們盡量使用實現介面的方法來實現執行緒 啟動方式不同 thread類 只需要new乙個例項就能夠呼叫start方法 例如 cat cat new cat cat.start run...
建立執行緒的兩種方法
有兩種方式 從tread中派生出新的子類 實現runnable介面 還有一種習慣用法 一 從tread中派生出新的子類 建立片段 給執行緒起名 a,並建立 new 型別 執行緒名字 start 完整的建立乙個執行緒,並呼叫 為了給執行緒起名字,建立了域name,並類裡邊建立了構造器 public c...
sql server分頁的兩種方法比較
在sql server資料庫中,如果乙個查詢結果資料量比較大,就需要在查詢的時候分頁,每次只返回其中一頁。下面就將為您講解比較sql server分頁的兩種方法,如果您對sql server分頁感興趣的話,不妨一看。sql server分頁第一種方法 思路是根據頁號取出兩部分資料,比如取出前90條,...