A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 荣天 中级黑马   /  2012-5-10 17:21  /  3499 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

JAVA多线程中“锁”的概念的理解??  哪位大虾 帮忙解释下

评分

参与人数 1技术分 +1 收起 理由
攻城狮 + 1 赞一个!

查看全部评分

8 个回复

倒序浏览
说的通俗一点 就是有一个卫生间一次只能有一个解决 如果里面有人在 那么外面的人必须等里面的人出来再进去 也叫同步

评分

参与人数 1技术分 +1 收起 理由
攻城狮 + 1 赞一个!

查看全部评分

回复 使用道具 举报
你从对象自身出发去想  反正一个对象就只有一把锁 只要有线程来访问它 就会上锁 其他的所有线程在此期间都不能访问上锁的对象或方法  就像一间房子,你进去后上了锁 不管是你自家的人 还是其他人都进不去 只有你自己在屋里

评分

参与人数 1技术分 +1 收起 理由
攻城狮 + 1 赞一个!

查看全部评分

回复 使用道具 举报
你从对象自身出发去想  反正一个对象就只有一把锁 只要有线程来访问它 就会上锁 其他的所有线程在此期间都不能访问上锁的对象或方法  就像一间房子,你进去后上了锁 不管是你自家的人 还是其他人都进不去 只有你自己在屋里
回复 使用道具 举报
本帖最后由 小小企鹅 于 2012-10-27 22:37 编辑

每个Java对象都有一个锁,每个锁只有一把钥匙。通常对象都没上锁,但如果对象有同步化方法的话,则线程只能在取得钥匙的情况下进入线程。也就是说并没有其他线程已进入的情况下才能进入。
只要把作用在数据上的方法同步化,在方法的声明上加synchronized这个修饰符:
private synchronized void fun(){};
就可以防止两个线程同时进入同一方法。  
回复 使用道具 举报
我讲个大概啊
举个不是太恰当的小例子,在乡下有一个公共厕所,有两个坑(中间无隔墙),是可以同时两个人(同性)用的,但是呢这个厕所没标明那男女,所以呢当有一个人进入时,他就把门给锁上,里面的公共手纸啊都是他一个人用,对不对?但是现在问题来了,有这么一号人,他没上锁,另一个人也进来了(姑且考虑这两个人同性啊),后进来这人解决的快点,他把本属于先进来的手纸给用完了,那第一个人就没得用了,就一直在那蹲下去了,你说痛不痛苦?
上面例子中厕所门就好比程序入口,公共手纸就好比资源,不是太恰当,希望你能理解。{:soso_e100:}

评分

参与人数 1技术分 +1 收起 理由
攻城狮 + 1 很给力!

查看全部评分

回复 使用道具 举报
黄坚声 发表于 2012-5-10 17:32
你从对象自身出发去想  反正一个对象就只有一把锁 只要有线程来访问它 就会上锁 其他的所有线程在此期间都 ...

使程序更安全,不会出现
同步的前提:
同步需要两个或者两个以上的线程。
多个线程使用的是同一个锁。
未满足这两个条件,不能称其为同步。
同步的好处:
       同步的出现解决了多线程的安全问题。
同步的弊端:
当线程相当多时,因为每个线程都会去判断同步上的锁,这是很耗费资源的,无形中会降低程序的运行效率。
回复 使用道具 举报
锁一般用在多线程中,
作用是:把同步的共享数据放在里面,这样,这些数据在想干什么就干什么,与锁外面的无关,
但是,锁外面的线程都在急着进去,因为,里面有其他线程,所以,进不去。
只有当里面线程出来时,这时,等于释放了这个锁,而其他的线程就可以进去一个了。同理,它在里面时,也是想干什么都行,锁外面都进不去,只能等它出来后,释放了锁。其它线程才能进去。

毕老师在讲到这里时,举了个经典的例子:就是在火车上的厕所。你去看看,就会明白了。

其实,锁就像一个厕所一样。里面只能有一个人在里面办事,等这个出来了,把厕所门打开了,就是释放了厕所。这时,其他人才能进去一个。明白了吧。
回复 使用道具 举报
锁一般用在多线程中,
作用是:把同步的共享数据放在里面,这样,这些数据在想干什么就干什么,与锁外面的无关,
但是,锁外面的线程都在急着进去,因为,里面有其他线程,所以,进不去。
只有当里面线程出来时,这时,等于释放了这个锁,而其他的线程就可以进去一个了。同理,它在里面时,也是想干什么都行,锁外面都进不去,只能等它出来后,释放了锁。其它线程才能进去。

毕老师在讲到这里时,举了个经典的例子:就是在火车上的厕所。你去看看,就会明白了。

其实,锁就像一个厕所一样。里面只能有一个人在里面办事,等这个出来了,把厕所门打开了,就是释放了厕所。这时,其他人才能进去一个。明白了吧。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马