day24總結_多執行緒和設計模式
阿新 • • 發佈:2018-11-07
1、多執行緒
①、JDK5以後的針對執行緒的鎖定操作和釋放操作
// 定義鎖物件
private Lock lock = new ReentrantLock();
// 加鎖
lock.lock();
// 釋放鎖
lock.unlock();
②、死鎖問題的描述和程式碼體現
*死鎖:兩個或兩個以上的執行緒在爭奪資源的過程中,發生的一種相互等待的現象。
public void run() { if (flag) { synchronized (MyLock.objA) { System.out.println("IF objA"); synchronized (MyLock.objB) { System.out.println("IF objB"); } } } else { synchronized (MyLock.objB) { System.out.println("IF objB"); synchronized (MyLock.objA) { System.out.println("IF objA"); } } } }
③、生產者和消費者多執行緒體現(執行緒間通訊問題)
// 基礎版本
// 改進版本1
// 改進版本2
// 最終版本3
A:最基本的版本,只有一個數據。
B:改進版本,給出了不同的資料,並加入了同步機制
C:等待喚醒機制改進該程式,讓資料能夠實現依次的出現
wait()
notify()
notifyAll() (多生產多消費)
D:等待喚醒機制的程式碼優化。把資料及操作都寫在了資源類中
④執行緒組
⑤執行緒池
⑥多執行緒實現的第三種方案
⑦多執行緒的面試題
二、設計模式
①面試物件的常見設計原則
單一開閉
里氏
依賴注入
迪米特
②設計模式概述和分類
A:經驗的總結
B:三類建立型
結構型
行為型
③改進的設計模式
A:簡單工廠模式
B:工廠方法模式
C:單例模式(掌握)
a:餓漢式
b:懶漢式
④Runtime
JDK提供的一個單例模式應用的類。
還可以呼叫dos命令。