執行緒與程序理論知識入門03 類鎖,物件鎖,顯示鎖

2021-10-25 13:55:34 字數 2657 閱讀 7880

synchronized 隱士鎖(內建鎖)(鎖定 解鎖 看不到)(被jdk封裝到內部裡面去 原理呼叫native層跟作業系統互動 完成…)

/**

* synchronized 隱士鎖(內建鎖)(鎖定 解鎖 看不到)(被jdk封裝到內部裡面去 原理呼叫native層跟作業系統互動 完成....)

*/public

class

gpsengine

return gpsengine;

}//如果多個執行緒 或者多個地方呼叫

//多執行緒執行的時候 需要非常注意 安全性問題

}

/**

* synchronized 隱士鎖(內建鎖)(鎖定 解鎖 看不到)(被jdk封裝到內部裡面去 原理呼叫native層跟作業系統互動 完成....)

*/public

class

gpsengine

return gpsengine;

}//thread-0執行完畢

}

類鎖:

static synchronized (靜態+synchronized 所持有的鎖就是這個引擎gpsengine 的class)

靜態代表還沒new出來還沒有例項化之前就會通過class的方式載入

持有一把鎖 gpsengine.class物件鎖 ==類鎖

上述**效率太低,改進一下:

//雙重檢測 比較典型的單例

//雙重檢測 比較典型的單例

public

static gpsengine getgpsengine()

}}return gpsengine;

}

//多執行緒執行中,基本上有安全性問題

//加鎖

public

class

syntest

//執行緒

private

static

class

count

extends

thread

@override

public

void

run()}

}public

static

void

main

(string[

] args) throws interruptedexception

}

14760 //第一次結果

18538 //第二次結果

14289 //第三次結果

加上物件鎖

//累加函式

//synchronized == 物件鎖 持有一把鎖 syntest.this syntest的例項

public synchronized void

inccount()

20000
public

void

inccount2()

}

public

void

inccount2()

}

20000
//隨便持有一把鎖, 物件鎖 object物件

private object object =

newobject()

;private string str =

newstring()

;public

void

inccount3()

}

可重入鎖 reentrantlock()

synchronized 天生也是可重入鎖

可重入鎖就是在遞迴的時候可反覆的拿鎖

// synchronized 天生是可重入鎖

//如果synchronized不是可重入鎖,無法呼叫自己 遞迴第二次第n次無法拿到鎖 造成卡死狀態一樣

public synchronized void

add(

)

reentrantlock()

//syn 隱士的 內部會完成 鎖定 解鎖 等等 底層邏輯 我們改不了 看不到,只需要加乙個關鍵字

//lock 顯示鎖 我們程式設計師可以控制 鎖定 解鎖 等邏輯

public

class

lockdemo

public

void

incr2()

finally

}// synchronized 天生是可重入鎖

//如果synchronized不是可重入鎖,無法呼叫自己 遞迴第二次第n次無法拿到鎖 造成卡死狀態一樣

public synchronized void

add(

)public

static

void

main

(string[

] args)

}

python 程序理論知識

1.在看程序之前了解一下作業系統 1 作業系統的作用 a 隱藏醜陋複雜的硬體介面,提供良好的抽象介面 b 管理 排程程序,並且將多個程序對硬體的競爭變得有序 2 多道技術 a.產生背景 針對單核,實現併發 ps 現在的主機一般是多核,那麼每個核都會利用多道技術 有4個cpu,執行於cpu1的某個程式...

day 7 1 程序理論知識

一.程序的定義 程序 process 是計算機中的程式關於某資料集合上的一次執行活動,是系統進行資源分配和排程的基本單位,是作業系統 結構的基礎。在早期面向程序設計的計算機結構中,程序是程式的基本執行實體 在當代面向執行緒設計的計算機結構中,程序是執行緒的容器。程式是指令 資料及其組織形式的描述,程...

OLTP與OLAP的介紹(理論知識)

oltp與olap的介紹 資料處理大致可以分成兩大類 聯機事務處理oltp on line transaction processing 聯機分析處理olap on line analytical processing oltp是傳統的關係型資料庫的主要應用,主要是基本的 日常的事務處理,例如銀行交...