1. 程式人生 > >Android基礎知識總結

Android基礎知識總結

一:多執行緒

1.1:多執行緒的安全問題

  1.        多個執行緒共享同一資料,當某一執行緒執行多條語句時,其他執行緒也執行進來,導致資料在某一語句上被多次修改,執行到下一語句時,導致錯誤資料的產生。

1.2:執行緒池的理解        1.2.1:降低資源消耗。通過重複利用已建立的執行緒降低執行緒建立和銷燬造成的消耗。        1.2.2:提高響應速度。當任務到達時,任務可以不需要等到執行緒建立就能立即執行。        1.2.3:提高執行緒的可管理性。執行緒是稀缺資源,如果無限制的建立,不僅會消耗系統資源,還會降低系統的穩定             性,使用執行緒池可以進行統一的分配,調優和監控        1.2.4:執行緒池剛建立時,裡面沒有一個執行緒。任務佇列是作為引數傳進來的。不過,就算佇列裡面有任務,執行緒池也        不會馬上執行它們。 1.3、當呼叫 execute() 方法新增一個任務時,執行緒池會做如下判斷:        a. 如果正在執行的執行緒數量小於 corePoolSize,那麼馬上建立執行緒執行這個任務;        b. 如果正在執行的執行緒數量大於或等於 corePoolSize,那麼將這個任務放入佇列。        c. 如果這時候佇列滿了,而且正在執行的執行緒數量小於 maximumPoolSize,那麼還是要建立執行緒執行這        個任務;         d. 如果佇列滿了,而且正在執行的執行緒數量大於或等於 maximumPoolSize,那麼執行緒池會丟擲異常,告         訴呼叫者“我不能再接受任務了”。         3、當一個執行緒完成任務時,它會從佇列中取下一個任務來執行。         4、當一個執行緒無事可做,超過一定的時間(keepAliveTime)時,執行緒池會判斷,如果當前執行的執行緒數大於         corePoolSize,那麼這個執行緒就被停掉。所以執行緒池的所有任務完成後,它最終會收縮到 corePoolSize 的大小。