為什么使用synchronize關鍵字:
存在共享數據,且此數據涉及多線程操作。(如經典的多窗口賣票的例子)
同步代碼塊的鎖為對象中定義的LOCK ,同步方法的鎖為this鎖。
同步代碼塊和同步方法在同一實例中的表現:
同步代碼塊:
同步方法:
從結果可以看出:
無論是同步代碼塊還是同步方法,在同一實例中都能達到上鎖的效果。
在不同實例中:
可以得到結論,lock鎖和this鎖無法鎖住不同實例中的調用
class鎖:
當方法加上static修飾實,此時的鎖為class鎖,class鎖能夠達到不同對象間上鎖的效果