共享資源:
一塊資源可能會被多個線程共享,也就是多個線程可能會訪問同一塊資源。
比如多個線程訪問容一個對象,同一個變量,同一個文件。
當多個線程訪問同一塊資源時,很容易引發(fā)數(shù)據錯亂和數(shù)據安全問題
分析
問題所在:把讀寫的問題給分開了,導致了數(shù)據的錯亂。讀寫綁定在一起,形成一個原子。一旦一個線程在執(zhí)行這個變量讀寫過程時,其他線程不允許操作。
讀寫鎖定
//注釋:
1.任意一個對象內部都有一把鎖。加把鎖可以解決讀寫問題。
2.@synchronized為互斥鎖,線程同步,按順序執(zhí)行。一個線程如果在執(zhí)行鎖中的內容,另一個線程只能等待。
3.互斥鎖默認是打開的。
4.注意這個鎖所屬的對象必須是全局變量才會有效。如果是局部變量,那么每次過來這個鎖都是開著的,就起不到鎖的效果。
5.代碼鎖的越少越好,這樣性能會越高。