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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

当一个线程进入一个对象的一个 synchronized 方法后,其它线程是否可进入此对象的其它方法?

3 个回复

倒序浏览
可以,这与对象没有关系
对于多个synchronized方法用了对象A,那么A只是一个锁的作用
这多个synchronized方法所包含的所有范围,只能有一个线程

就好像这许多synchronized方法是许多门,管着不同房间,A是钥匙,只有一把
有一个人(线程)拿着钥匙A进入了其中一个房间,那么另外的人想进入其他房间就没有了钥匙
只能等待进入某个房间的那人出来,其他人才有机会

评分

参与人数 1技术分 +1 收起 理由
简★零度 + 1

查看全部评分

回复 使用道具 举报
本帖最后由 程洋 于 2013-12-13 15:27 编辑

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

评分

参与人数 1技术分 +1 收起 理由
简★零度 + 1

查看全部评分

回复 使用道具 举报
可以进入,当方法被定义为sychronized后,该段代码被上锁,且这个锁具有唯一性,也就是被定义为只有这个线程可以执行,但是其他线程定义的sychronized方法不会与其冲突。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马