java面试题网

普通会员

257

帖子

9

回复

151

积分

楼主
发表于 2018-03-22 09:57:28 | 查看: 571| 回复: 1

分几种情况:

(1)其他方法前是否加了synchronized关键字,如果没加,则能。

(2)如果这个方法内部调用了wait,则可以进入其他synchronized方法。

(3)如果其他个方法都加了synchronized关键字,并且内部没有调用wait,则不能。

(4)如果其他方法是static,它用的同步锁是当前类的字节码,与非静态的方法不能同步,因为非静态的方法用的是this。



普通会员

216

帖子

75

回复

160

积分
沙发
发表于 2019-05-05 14:24:40
当一个线程进入一个对象的synchronized方法A之后,其它线程是否可进入此对象的synchronized方法?

不能。其它线程只能访问该对象的非同步方法,同步方法则不能进入。 只有等待当前线程执行完毕释放锁资源之后,其他线程才有可能进行执行该同步方法!

延伸 对象锁分为三种:共享资源、this、当前类的字节码文件对象

您需要登录后才可以回帖 登录 | 立即注册

java面试题网无聊看看网与java建站系统提供技术支持V2.1 网站地图 © 2016-2018