解釋:
這里的this是指當前對象,也就是說不管ta還是tb,剛開始運行這段代碼的時候會給這段代碼加個鎖,這樣即使運行到中間被替換了,
另一個線程也不會執行這段代碼,因為這段代碼加鎖了,而鑰匙在給代碼加鎖的那個線程手里,只有加鎖的線程運行完這段代碼,才會給代碼解鎖.
然后其他線程才能執行這段代碼.. 加個synchronized(this)以后運行結果是這樣:
A synchronized loop 0
A synchronized loop 1
A synchronized loop 2
A synchronized loop 3
A synchronized loop 4
B synchronized loop 0
B synchronized loop 1
B synchronized loop 2
B synchronized loop 3
B synchronized loop 4
不加的話是這樣:(順序亂了,有好多種結果,這里只是其中一種)..
A synchronized loop 0
B synchronized loop 0
A synchronized loop 1
B synchronized loop 1
A synchronized loop 2
B synchronized loop 2
A synchronized loop 3
B synchronized loop 3
B synchronized loop 4
A synchronized loop 4