內部類、執行緒和併發的個人總結
內部類
內部類分為:普通內部類、程式塊中的內部類、靜態內部類、匿名內部類。
普通內部類必須在宿主構造例項時才能構造,普通內部類保有宿主的引用可以不受限制的訪問宿主的任何成員。
常見用法:
1:利用內部類隱藏實現介面
當程式中某些邏輯要開發新的類來實現,而這時內部類是最方便時,使用內部類來實現邏輯。
2:方法中的內部類和匿名內部類
在程式塊中也可以定義內部類,有時甚至是沒有名稱的內部類(匿名內部類)。
3:靜態內部類(巢狀類)
無需宿主的例項即可建立,因此靜態內部類不能訪問宿主類的非靜態成員。
執行緒和併發
執行緒使得一個程式可以處理多個請求。
常用方法:
1、實現執行緒的兩種方法
一.繼承java.lang.Thread類,重寫run( )方法,在run方法中完成執行緒功能。
二.通過Runnable介面實現。
實現Runnable介面必須實現run方法,在run方法中完成功能處理,在建立執行緒時要以實現Runnable介面的例項為引數構造Thread,呼叫其start方法啟動執行緒。
2、匿名內部類中的執行緒
可以使用匿名內部類實現執行緒。
如:
方法名 {
//方法體中
new Thread(){
public void run () {
//實現功能
}
} .start();
}
3、共享資源的競爭
引入synchronized 程式段來控制競爭程式段的執行
可以給程式段和方法加同步“鎖”。
在java中任何物件都能作為同步鎖(Object已經具有次功能)
用synchronized限定方法時,別的執行緒不能呼叫同一物件(一定是同一例項)的synchronized方法。即不能呼叫同一物件的synchronized方法。
4、執行緒間協作
執行緒間的協作靠wait(),notify(),synchronized方法來完成。
如:一個執行緒或的同步鎖執行到一半時把鎖讓出,wait()一下,使另一個執行緒獲得同步鎖,當其執行完時notify()打醒它。
wait()和notify()會影響效率。
5、執行緒池 後續