1. 程式人生 > >內部類、執行緒和併發的個人總結

內部類、執行緒和併發的個人總結

內部類

   內部類分為:普通內部類、程式塊中的內部類、靜態內部類、匿名內部類。 

  普通內部類必須在宿主構造例項時才能構造,普通內部類保有宿主的引用可以不受限制的訪問宿主的任何成員。

  常見用法:

   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、執行緒池      後續