synchronized是一个关键字,他的作用就是给canvas加互斥锁标记
他可以锁方法,也可以锁一段代码块
synchronized(变量canvas){代码块}这种格式就是锁定该代码块中的这个变量
当一个线程执行到代码块里之后
canvas的锁就交给了这个对象
其他的线程就不能执行这段代码块了,只能等待正在执行的那个线程执行完了那段代码块之后,才有机会拿到canvas的锁标记,这样他才有机会去执行那段代码
比喻
canvas是一个漂亮的小妞,她被synchronized修饰了,她就有一锁标记,只有拿到这把锁标记的人才可以是她的男朋友
现在我很幸运,拿到了这把锁,我就可以调用这小妞的牵手方法,接吻方法,等等。
但是就在我和她交往的同时,你也要和她牵手,或者更多的男人要和她牵手,
对不起,你没拿到锁,不能有这些方法调用,你和他们就只能等待,等到什么时候呢,等到我和她分手为止,到分手的时候,我就释放了她的锁标记,你和其他的男人就去抢......
这里的小妞就是canvas对象
我和你们都是一个线程
加了synchronized,就防止了多线程并发访问的不好后果~