白话 Synchronized

  很多情况下检验你对技术是否理解,可以用一个标准来判断:是否能用简洁的语言向一个没有基础的人讲解清楚。

  传送门(个人觉得讲解的不错的博客地址):

深入分析版本

简单易懂版本

  基本上有上面两篇博客就知道synchronized是怎么用的了。


  如果所示,一个超大的市场(对象),里面有洗手间,餐厅,试衣间等等,可以进行各种活动,上厕所(方法A),吃饭(方法B),试衣服(方法C)。不同活动要求不同,去上厕所需要进去后把门锁上,免得别人进来;试衣间也是一样的道理;至于餐厅吃饭就不需要了,你吃什么别人看到了也没关系。

这个市场特殊的地方就是,只有一把锁,你要是去上厕所把把锁拿走了,想去换衣服的同学就不行了,要等你上完厕所还掉锁了他才能拿过去试衣间用。同样的道理,你去试衣间把锁带走了,另外的同学要上厕所就得等你把锁归还。

如果你去上厕所把锁拿走了,对想要吃饭的同学没有影响的,因为他在餐厅吃饭没必要把餐厅的门锁上。


下面通俗解释一些问题:

1. 如果没有锁的情况下

没有锁的情况就比如吃饭和剪头发,A同学去吃饭,B同学去剪头发,是没有什么关系的。

2. 如果有有锁的情况下

比如去洗手间和试衣间,都是需要锁的,但是锁只有一把。A同学去洗手间了,B同学想去试衣间只能等等咯。

如果是两个市场(对象),A在市场1,去了洗手间,对于在市场的B同学是没有影响的。因为市场1有一把锁,市场2也有一把锁。

3. 如果锁用在静态方法

所有的市场公用同一把锁,A同学在市场1去了洗手间,市场2里面的B同学就去不了试衣间,要等A同学用完。


  不知道以上有没有讲清楚,或者有更好的比方。

你可能感兴趣的:(白话 Synchronized)