黑马程序员技术交流社区

标题: 同步函数用的是哪一个锁呢 [打印本页]

作者: 发现的眼睛    时间: 2015-7-18 11:38
标题: 同步函数用的是哪一个锁呢
同步函数和同步代码块中,锁什么意思呀?
函数需要被对象调用。那么函数都有一个所属对象引用。就是this。
所以同步函数使用的锁是this。

通过该程序进行验证。

使用两个线程来买票。
一个线程在同步代码块中。
一个线程在同步函数中。
都在执行买票动作。
作者: 野驴少东    时间: 2015-7-18 14:01
      有锁就有钥匙,对吧~!就好像毕老师说的,你有一把钥匙,我有一把钥匙,我们大家都有一把钥匙,但是火车上的厕所只有一个坑,只能让一个人进去蹲。如果你正在蹲坑,突然又进来一个哥们(或者美女),大家都很尴尬。那蹲坑就不是享受了,更是担惊受怕。
       那为什么要有这个机制呢?
       就是为了避免多个线程执行共享代码时的“混乱”
作者: gaoming971366    时间: 2015-7-18 14:14
你把同步函数比作银行吧,锁就是你去银行都会领取一个小票,小票就是通行证,没有小票你取不了钱也就是进去不,所谓的this,说白了用的就是本身的.class,有时候看看源代码,你也许就会有惊喜,呵呵希望对你有帮助
作者: wws1214    时间: 2015-7-18 14:40
通俗的讲,锁就是火车上的卫生间,一次只让一个进去。而代码运行时,一次只让一个线程进去
作者: 发现的眼睛    时间: 2015-7-18 16:25
多谢了 解释的都挺通俗易懂的

作者: Matrix_heima    时间: 2015-7-18 16:49
一般函数用的锁是this,静态函数用的锁可以是本类的字节码对象
作者: 不怕黑人    时间: 2015-7-18 17:05
学习了。。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2