1、什麼是Lock?多線程
Lock——字面上理解就是鎖上;鎖住;把……鎖起來的意思;this
爲何要鎖?要鎖幹什麼?——回到現實中可想象到,這個衛生間我要上,其餘人不要進來!(因此我要鎖住門);又或者土味情話所言,我要把你鎖在個人內心,而後在裏面加個無限循環語句,不給你出來,也不被別人所得,你只能是個人,哈哈哈哈....spa
上面的簡單想象,能夠獲得,咱們之因此要鎖,就是由於咱們想獨佔某個資源(廁所and你的心愛人),或者在須要共用同一個資源的時候(更多的表如今多線程方面)。多線程能夠簡單的理解爲,一個線程看做是一我的,多線程就是多我的在幹活,每一個人幹每一個人的事,互不干擾,若是你的代碼中出現相似(廁所這樣的公共資源),你就得加個鎖拉!否則多我的上同一個廁所,那畫面得.............咳咳咳~總之輕則數據異常,重則軟件崩潰。線程
Lock關鍵字主要是實現多線程同步3d
2、下面提供幾個簡單的小例子:
下面的例子是根據自身能力給的例子,若有不妥之處,還請各位多多指導!
對象
一、新建一個Window窗體應用程序——略~blog
二、添加一個鎖資源
private static object o = new object();同步
三、添加三個按鈕button
(1)線程1按鈕以及線程方法
軟件
按鈕1是實現開啓線程1;
線程方法:
this.Invoke()是一種託管方法——解決跨線程問題~
(2)線程2按鈕
同理
(3)同時執行兩個線程的按鈕
四、加鎖和沒加鎖區別
(1)加鎖效果
(2)不加鎖
去掉lock{}部分
線程1和2同時寫入了1,數據衝突
五、使用總結:
建鎖對象——private static object o = new object();
鎖住該鎖的地方——lock{};