1. 程式人生 > >day24總結_多執行緒和設計模式

day24總結_多執行緒和設計模式

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命令。