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