講synchronized關(guān)鍵字時候,就不得不提一下多線程問題同步問題
多線程的同步問題:多個線程同時修改一個數(shù)據(jù)的時候,可能導(dǎo)致的問題 多線程的問題,又叫Concurrency?問題.
Java中提供了同步機制來解決處理資源沖突問題,使用synchronized關(guān)鍵字
同步快:

代碼1
synchronized表示當(dāng)前線程,獨占 對象 someObject,如果有其他線程試圖占有對象someObject,就會等待,直到當(dāng)前線程釋放對someObject的占用。someObject 又叫同步對象,所有的對象,都可以作為同步對象,為了達到同步的效果必須使用同一個同步對象

代碼二
提一下這個someObject,首先它為任意一個對象,而且是各線程共同去占有的,然后當(dāng)多個線程去啟動并占有時,這就引入一個叫標(biāo)志位的東西,每個對象存在一個標(biāo)志位,并具有兩個值0,1,當(dāng)其中一個線程運行到代碼一的同步快時先檢查該對象的標(biāo)志位,若為0狀態(tài),表明該對象有其他線程占有,它會繼續(xù)等待,知道其被釋放,這時該對象標(biāo)志位為1,它會占有這個對象,執(zhí)行同步快中的代碼,并且會把someObject對象標(biāo)志位設(shè)置為0,防止其他線程執(zhí)行。
同步方法:

代碼三