同步锁/互斥锁
互斥鎖:是為了避免多個線程搶奪資源造成數據不準確問題而提出的,是為了限制同一時刻多個線程訪問同一個數據.
首先需要了解兩個概念:
1>多線程并發執行:我們都知道,如果不涉及兩個線程之間傳值或是共享資源的時候,多個線程之間是沒有交集的,你走你的陽關道我走我的獨木橋,井水不犯河水,但是如果需要傳值或是共享資源兩個線程之間就有了碰頭的機會.所以又出了一個線程同步的概念.
2>多線程同步執行:如果單從字面理解很難說清楚有什么區別,都是說多個線程在同一時刻各自做各自的事情,本來不同線程之間就沒有什么關系,這是多線程產生的意義.從多線程產生的意義來說,這個"同步執行"是不正常的!什么意思呢>本來都是獨立的線程沒有所謂的先后的順序的,可是這個同步執行,就要求線程之間要有個順序,所以他是非自然的,是人為扭曲的線程狀態.我們通過代碼來實現的多線程之間有序的執行的假象
好的我來多個比喻,比如兩個中國人一個在南方一個在北方不認識沒交集,兩個人各自獨立的生活,沒什么關系,但是他們都要從北京飛到上海,且坐了同一班飛機,假設一次只能有一個人過安檢,這個時候就要有個先后順序,所以安檢就是一把鎖,這就是同步執行的一個場景,還有其他場景像之前文章寫的斷點續傳,也是多線程碰面的場景,這個比喻與下面說的同步鎖的場景有點不貼切,我是著重說了一下多線程碰面的場景,自己體會一下.上代碼,程序是模擬多個窗口賣票的過程.
##還有那個鎖不能加到循環外面:單說程序也不好說,我還是做個比喻,你家有三個臥室,你的目的是不然人進入你老婆的房間,你只要把你老婆臥室的門鎖上就可以了,不是把房門鎖上,那樣客廳和其他臥室都不能進人了!
總結
- 上一篇: 地理坐标系4326--投影坐标系3857
- 下一篇: 禁忌吃速效救心丸(什么情况下应该吃救心丸