對象是一個鎖標志。按照先到先得的原則,如果有多個線程都會執行代碼,并使用同一個對象作為鎖,

創新互聯2013年開創至今,是專業互聯網技術服務公司,擁有項目成都網站設計、成都做網站網站策劃,項目實施與項目整合能力。我們以讓每一個夢想脫穎而出為使命,1280元任丘做網站,已為上家服務,為任丘各地企業和個人服務,聯系電話:028-86922220
synchronize(對象){ .... }
那么,先執行這段代碼的那個線程,將會獲得這個對象鎖,而當這個線程執行這段代碼的時候,其他線程也是使用這個對象作為鎖的,就不能執行這段代碼,知道最初得到這個鎖的線程運行完這段代碼,然后再把鎖分配給下一個線程執行。
用While和一個計數變量,以下是偽代碼
定義計數變量并歸零
定義狀態變量并歸零
while(計數變量3且狀態變量為真)
{
輸入密碼
if(密碼正確)
{
狀態變量設定為真
}
else
{
計數變量+1
密碼框清空
}
}
if(狀態變量不為真) /說明前面的循環結束是因為輸錯了三次
{
提示:請管理員解鎖
【密碼輸入過程與上方用while循環類似】
}
else
{
(剩余操作)
}
public Object getObject(String key,Object o) {
synchronized (map) {
if(map.get(key)==null) {
map.put(key,o)
}else {
return map.get(key);
}}// 格式沒法弄,自己弄一下
}
// demol0326 的回答意思使用MyTest的實例來加鎖,但是map是static的,無法鎖住
// MyTest的多個實例在多個線程中的請求
//禾木雙子 :如果A線程在getObject方法的第二行停止,此時B線程進入getObject后執行部分代碼, 此時B線程停止,A線程啟動,他不會執行'多線程處理', 仍然有線程線程安全問題,(想像一下更多的線程進入該方法的情況,num甚至會得到負值)
多線程同步的實現最終依賴鎖機制。我們可以想象某一共享資源是一間屋子,每個人都是一個線程。當A希望進入房間時,他必須獲得門鎖,一旦A獲得門鎖,他進去后就立刻將門鎖上,于是B,C,D...就不得不在門外等待,直到A釋放鎖出來后,B,C,D...中的某一人搶到了該鎖(具體搶法依賴于JVM的實現,可以先到先得,也可以隨機挑選),然后進屋又將門鎖上。這樣,任一時刻最多有一人在屋內(使用共享資源)。 Java語言規范內置了對多線程的支持。對于Java程序來說,每一個對象實例都有一把“鎖”,一旦某個線程獲得了該鎖,別的線程如果希望獲得該鎖,只能等待這個線程釋放鎖之后。獲得鎖的方法只有一個,就是synchronized關鍵字。
分享名稱:java鎖機代碼 java死鎖代碼
標題URL:http://www.yijiale78.com/article30/doddppo.html
成都網站建設公司_創新互聯,為您提供網站建設、App開發、建站公司、網站設計公司、定制網站、關鍵詞優化
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯