線程安全
多個(gè)線程同時(shí)共享同一個(gè)全局變量或靜態(tài)變量,對(duì)其做寫的操作,可能匯聚i發(fā)生數(shù)據(jù)沖突。讀操作是不會(huì)的。
所以可以使用synchornized解決同步問題,即我們所說的線程通信,但是效率是低的。
同步函數(shù)若使用synchornized是使用this鎖。原理其實(shí)就是把方法或函數(shù)前加synchornized,多線程引用時(shí)候需要搶到“鎖”,才有權(quán)對(duì)其進(jìn)行讀寫操作。這個(gè)鎖可以是一個(gè)object類型。
使用syn、lock都是屬于單個(gè)jvm中同步。
分布式鎖和高并發(fā)與jvm是沒有關(guān)系。
多線程死鎖
同步函數(shù)中簽到同步函數(shù),導(dǎo)致死鎖狀態(tài),原理:鎖 無法釋放,互相搶有對(duì)方的鎖
在多線程中需要注意原子性,可見性。
原子性解釋為:一個(gè)操作進(jìn)行到底
可見性解釋為:在線程池中,一個(gè)線程改變了一個(gè)全局變量的值,另一條線程應(yīng)立即更新信息
使用AtomicZnteger可以保證原子性又保證可見性