黑马程序员技术交流社区

标题: 当一个线程进入一个对象的一个 synchronized 方法后 [打印本页]

作者: 雷洋    时间: 2013-12-12 23:54
标题: 当一个线程进入一个对象的一个 synchronized 方法后
当一个线程进入一个对象的一个 synchronized 方法后,其它线程是否可进入此对象的其它方法?


作者: 風諾    时间: 2013-12-13 00:52
可以,这与对象没有关系
对于多个synchronized方法用了对象A,那么A只是一个锁的作用
这多个synchronized方法所包含的所有范围,只能有一个线程

就好像这许多synchronized方法是许多门,管着不同房间,A是钥匙,只有一把
有一个人(线程)拿着钥匙A进入了其中一个房间,那么另外的人想进入其他房间就没有了钥匙
只能等待进入某个房间的那人出来,其他人才有机会
作者: 程洋    时间: 2013-12-13 15:22
本帖最后由 程洋 于 2013-12-13 15:27 编辑

这主要是看你怎么设置同步了;若是这个对象的所有方法都同步了,其他线程也是不可以访问这个对象的其他方法的;若是只给一个方法有同步,其他线程还是可以访问其他方法的.
这里其实和多条语句是一样的,多条语句相当于多个方法,你给几个语句同步,一次就只能一个线程访问这几个语句.

作者: 史超    时间: 2013-12-13 17:50
可以进入,当方法被定义为sychronized后,该段代码被上锁,且这个锁具有唯一性,也就是被定义为只有这个线程可以执行,但是其他线程定义的sychronized方法不会与其冲突。




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