執行緒同步
1、執行緒同步就是多個執行緒併發地訪問同乙個資料。
2、多執行緒就是同時去做同樣的事情,目的是提高程式的執行效率。
通過「售票」模擬線程同步
/*
* 通過"賣票"模擬線程同步
*/public
class
testticket
}//定義saleticket去實現runnable介面
但是執行緒共同訪問同一資料(執行緒併發)出現資源訪問錯誤也叫執行緒安全問題,即列印不合理的資料0票、-1票、同乙個票號被列印兩次。因為售票員3和售票員2在ticket>0為true時進入if迴圈,當時處於休眠狀態。在售票員3和售票員2休眠的時候由於售票員1列印ticket,此時的ticket=0。但是售票員3和售票員2休眠已經在if迴圈體裡面了,迴圈的條件ticket>0對他們兩個來說不起作用。所以售票員3和售票員2也順利列印ticket,但是列印的是不合法的資料,因此導致0票和-1票的出現。
同步鎖*重點內容*
使用同步鎖可以解決執行緒共同訪問同一資料(執行緒併發)出現資源訪問錯誤的問題/執行緒安全性問題。
同步鎖相當於廁所的門,鎖定已經占有的資源,直到用完後才釋放資源,別人才可以使用此資源。
同步鎖分為同步**塊和同步方法兩種。
(一)同步**塊
/*
* 通過"賣票"模擬線程同步
*/public
class
testticket
}//定義saleticket去實現runnable介面
(二)同步方法
/*
* 通過"賣票"模擬線程同步並採用同方法 解決執行緒安全性問題
*/public
class
testticket
}//定義saleticket去實現runnable介面
class
saleticket
implements
runnable}}
//同步方法
你不知道的JavaScript 筆記
作用域是什麼?作用域的兩種工作模式 詞法作用域和動態作用域 1.查詢 作用域查詢會在找到第乙個匹配識別符號停止 2.欺騙詞法 eval 修改作用域 with 建立新的作用域 後果 導致js引擎在靜態分析時停止優化,導致效能下降 遵循最小授權原則 1.隱藏內部實現 2.規避衝突 3.立即執行函式 ii...
你不知道的JavaScript學習筆記1 作用域
處理程式三要素 引擎 編譯與執行過程。編譯器 語法分析與 生成等。作用域 收集並維護由所有宣告的識別符號 變數 組成的一系列查詢,並實施一套非常嚴格的規則,確定當前執行的 對這些識別符號的訪問許可權。示例 var a 2 的解析過程 1.編譯器 詢問 作用域 是否已經有該名稱的變數 是 忽略該宣告,...
你不知道的 和
開發中,編寫有一定逼格的 是每個程式猿都追求的。經常用來判斷的符號 和 也經常用來定義變數哦,你知道嗎?邏輯與 在有乙個運算元不是布林值的情況下,就不一定返回布林值。比如以下情況 1 第乙個運算元是物件,返回第二個數 var myinfo console.log myinfo 2 輸出22 第二個運...