Java併發程式設計的藝術 十二 執行緒安全

2021-09-20 00:05:33 字數 611 閱讀 1295

// 讀執行緒

thread t1 = new thread( new runnable()

}}).start();

// 寫執行緒

thread t2 = new thread( new runnable()}}

}).start();

// 寫執行緒

thread t2 = new thread( new runnable(){

public

void

run(){

synchronized( vector ){

for(int i=0; i這兩個指令需要乙個reference型別的引數來指名要鎖定和解鎖的物件;

若同步塊沒有明確指定鎖物件,那麼就使用當前物件或當前類的class物件;

它是一把可重入的鎖,即:當前執行緒在已經獲得鎖的情況下,可以再次獲取該鎖,因此不會出現當前執行緒把自己鎖死的情況;

reentrantlock 

它也是一把可重入的鎖,但比synchronized多如下功能: 

執行緒封閉 

執行緒封閉:把所有涉及共享變數操作的任務都放在乙個執行緒中執行。 

這樣就不存在多條執行緒同時處理共享變數了,從而達到了執行緒安全目的。

Java併發程式設計的藝術 十二 執行緒安全

讀執行緒 thread t1 new thread new runnable start 寫執行緒 thread t2 new thread new runnable start 寫執行緒 thread t2 new thread new runnable public void run synch...

Java併發程式設計的藝術 筆記

併發存在的問題 上下文切換耗時,死鎖,軟硬體資源限制 解決方法 減少上下文切換 1.無鎖併發程式設計 讓不同的執行緒處理不同的資料段 將資料id採用hash演算法分配給不同的執行緒 2.cas演算法 compare and set使用jni 3.使用最少執行緒 減少處於waiting狀態的執行緒 j...

Java併發程式設計的藝術 十一 執行緒池 2

任務執行器 executor框架最核心的介面是executor,它表示任務的執行器。executor的子介面為executorservice。executorservice有兩大實現類 threadpoolexecutor和scheduledthreadpoolexecutor。執行結果 futur...