建立新執行執行緒有兩種方法。
l 一種方法是將類宣告為 thread 的子類。該子類應重寫 thread 類的 run 方法。建立物件,開啟執行緒。run方法相當於其他執行緒的main方法。
l 另一種方法是宣告乙個實現 runnable 介面的類。該類然後實現 run 方法。然後建立runnable的子類物件,傳入到某個執行緒的構造方法中,開啟執行緒。
繼承thread,重寫run方法
public測試class
mythread extends thread
}}
public兩個迴圈同時進行,交叉列印,因為調start方法時會開乙個新棧,兩個棧交替執行class demo02
}}
l thread.currentthread()獲取當前執行緒物件
l thread.currentthread().getname();獲取當前執行緒物件的名稱
publicclass demo02
}}
publicrunnable介面用來指定每個執行緒要執行的任務。包含了乙個 run 的無引數抽象方法,需要由介面實現類重寫該方法。class
mythread extends thread
}}
l thread類構造方法
建立執行緒的步驟。
1、定義類實現runnable介面。
2、覆蓋介面中的run方法。。
3、建立thread類的物件
4、將runnable介面的子類物件作為引數傳遞給thread類的建構函式。
5、呼叫thread類的start方法開啟執行緒。
publicclass
demo01
}}
public實現runnable介面,避免了繼承thread類的單繼承侷限性。覆蓋runnable介面中的run方法,將執行緒任務**定義到run方法中。class
myrunnable implements runnable }}
建立thread類的物件,只有建立thread類的物件才可以建立執行緒。執行緒任務已被封裝到runnable介面的run方法中,而這個run方法所屬於runnable介面的子類物件,所以將這個子類物件作為引數傳遞給thread的建構函式,這樣,執行緒物件建立時就可以明確要執行的執行緒的任務。
現runnable介面避免了單繼承的侷限性,所以較為常用。實現runnable介面的方式,更加的符合物件導向,執行緒分為兩部分,一部分執行緒物件,一部分執行緒任務。
匿名內部類格式:new父類或介面()
使用執行緒的內匿名內部類方式,可以方便的實現每個執行緒執行不同的執行緒任務操作。
public執行緒池,其實就是乙個容納多個執行緒的容器,其中的執行緒可以反覆使用,省去了頻繁建立執行緒物件的操作,無需反覆建立執行緒而消耗過多資源。class
demo02
thread t=new thread()}};
t.start();
//實現runable介面
//建立執行緒任務物件
runnable my=new
runnable()
};};
//建立執行緒物件,交替執行
newthread(my).start();}}
l executors:執行緒池建立工廠類
public static executorservice newfixedthreadpool(int nthreads):返回執行緒池物件
l executorservice:執行緒池類
future>submit(runnable task):獲取執行緒池中的某乙個執行緒物件,並執行
l future介面:用來記錄執行緒任務執行完畢後產生的結果。執行緒池建立與使用
l 使用執行緒池中線程物件的步驟:
建立執行緒池物件
建立runnable介面子類物件
提交runnable介面子類物件
關閉執行緒池
publicl runnable介面實現類class
demo03
}
publicl callable介面:與runnable介面功能相似,用來指定執行緒的任務。其中的call()方法,用來返回執行緒任務執行完畢後的結果,call方法可丟擲異常。class
myrunnable implements runnable }}
l executorservice:執行緒池類
futuresubmit(callabletask):獲取執行緒池中的某乙個執行緒物件,並執行執行緒中的call()方法
l future介面:用來記錄執行緒任務執行完畢後產生的結果。執行緒池建立與使用
l 使用執行緒池中線程物件的步驟:
建立執行緒池物件
建立callable介面子類物件
提交callable介面子類物件
關閉執行緒池
publicl callable介面實現類,call方法可丟擲異常、返回執行緒任務執行完畢後的結果class
demo04
}
public用兩條執行緒分別計算1-50的和 和1-100的和,將結果返回class mycallable implements callable
}
publicclass
demo01
}
publicclass call implements callable
public
integer call() throws exception
return
sum;}}
多執行緒 執行緒池
第一 降低資源消耗。通過重複利用已建立的執行緒降低執行緒建立和銷毀造成的消耗。第二 提高響應速度。當任務到達時,任務可以不需要等到執行緒建立就能立即執行。第三 提高執行緒的可管理性。執行緒是稀缺資源,如果無限制地建立,不僅會消耗系統資源,還會降低系統的穩定性,使用執行緒池可以進行統一分配 調優和監控...
多執行緒 執行緒池
執行緒池是什麼 執行緒池 thread pool 是一種基於池化思想管理執行緒的工具,經常出現在多執行緒伺服器中,如mysql。執行緒過多會帶來額外的開銷,其中包括建立銷毀執行緒的開銷 排程執行緒的開銷等等,同時也降低了計算機的整體效能。執行緒池維護多個執行緒,等待監督管理者分配可併發執行的任務。這...
多執行緒 執行緒池
執行緒池的作用 減少了每次建立 銷毀執行緒所帶來的損耗。執行緒池建立執行緒的簡易流程 文字描述 1 先判斷核心執行緒池 corepoolsize 是否已滿,沒滿就建立核心執行緒執行,滿了就進行下一判斷。2 判斷等待佇列 workqueue 是否已經滿了,沒滿就新增到等待佇列,滿了就進行下一判斷。3 ...