解決執行緒安全問題的第二種方式 Lock 鎖

2021-09-25 08:12:46 字數 998 閱讀 7872

private lock lock=new reentrantlock();

tryfinally

1.首先模擬乙個多執行緒(售票)的情境,此時存在重票或者錯票的安全問題

class

subthread

implements

runnable

catch

(interruptedexception e)

system.out.

println

(thread.

currentthread()

.getname()

+": 售票,票號為: "

+ticket)

; ticket--;}

else}}

}public

class

locktest

}

2.lock鎖方式解決執行緒安全問題,lock是介面,我們利用其子類reentrantlock重入鎖

主要採用三步,(1)例項化reentrantlock(2)在try部分呼叫lock()方法加鎖(3)在finally部分呼叫unlock()方法解鎖,解鎖後執行緒繼續重新爭奪cpu

class

subthread

implements

runnable

catch

(interruptedexception e)

system.out.

println

(thread.

currentthread()

.getname()

+": 售票,票號為: "

+ ticket)

; ticket--;}

else

}finally}}

}public

class

locktest

}

解決執行緒安全問題的第二種方法 同步方法

上次我們使用同步 塊解決執行緒安全問題,這次我們將採用第二種方式,同步方法,簡單就是把同步 塊放在乙個方法裡。格式 修飾符 synchronized 返回值型別 方法名 引數列表 使用步驟 1.把訪問了共享資料的 抽出來。2.在方法上新增synchronized修飾符。author jianyeli...

java多執行緒(第二種方式)

實現runnable介面。class demo implements runnable public void run class threaddemo2 執行緒從0開始編號。基本步驟 1,定義類實現runnable介面 2,覆蓋介面中的run方法,將執行緒任務 定義到run方法中。3,建立thre...

Qt 第二種執行緒

流程 工程目錄 新增在這裡作為全域性 namespace ui class mywidget public qwidget endif mywidget h mythread.cpp include mythread.h include 待會用到sleep函式 include mythread my...