synchronized是一個關鍵字,他的作用就是給canvas加互斥鎖標記
他可以鎖方法,也可以鎖一段代碼塊
synchronized(變量canvas){代碼塊}這種格式就是鎖定該代碼塊中的這個變量
當一個線程執行到代碼塊里之后
canvas的鎖就交給了這個對象
其他的線程就不能執行這段代碼塊了,只能等待正在執行的那個線程執行完了那段代碼塊之后,才有機會拿到canvas的鎖標記,這樣他才有機會去執行那段代碼
比喻
canvas是一個漂亮的小妞,她被synchronized修飾了,她就有一鎖標記,只有拿到這把鎖標記的人才可以是她的男朋友
現在我很幸運,拿到了這把鎖,我就可以調用這小妞的牽手方法,接吻方法,等等。
但是就在我和她交往的同時,你也要和她牽手,或者更多的男人要和她牽手,
對不起,你沒拿到鎖,不能有這些方法調用,你和他們就只能等待,等到什么時候呢,等到我和她分手為止,到分手的時候,我就釋放了她的鎖標記,你和其他的男人就去搶......
這里的小妞就是canvas對象
我和你們都是一個線程
加了synchronized,就防止了多線程并發訪問的不好后果~