synchronized
當(dāng)它用來修飾一個方法或者一個代碼塊的時候槐臀,能夠保證在同一時刻最多只有一個線程執(zhí)行該段代碼乘盼。
- 當(dāng)兩個并發(fā)線程訪問同一個對象object中的這個synchronized(this)同步代碼塊時嗜闻,一個時間內(nèi)只能有一個線程得到執(zhí)行。另一個線程必須等待當(dāng)前線程執(zhí)行完這個代碼塊以后才能執(zhí)行該代碼塊凌外。
- 然而蹦玫,當(dāng)一個線程訪問object的一個synchronized(this)同步代碼塊時,另一個線程仍然可以訪問該object中的非synchronized(this)同步代碼塊只锻。
- 當(dāng)一個線程訪問object的一個synchronized(this)同步代碼塊時玖像,其他線程對object中所有其它synchronized(this)同步代碼塊的訪問將被阻塞。
- 第三個例子同樣適用其它同步代碼塊齐饮。也就是說捐寥,當(dāng)一個線程訪問object的一個synchronized(this)同步代碼塊時笤昨,它就獲得了這個object的對象鎖。結(jié)果握恳,其它線程對該object對象所有同步代碼部分的訪問都被暫時阻塞瞒窒。