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

来源:百度知道 编辑:UC知道 时间:2024/06/19 18:20:33
当一个线程进入一个对象的一个synchronized方法后,其它线程是否可进入此对象的其它方法?

可以进入其他非synchronized的方法,synchronized的方法不可以的!
Java中的每个对象都有一个锁(lock)或者叫做监视器(monitor),当访问某个对象的synchronized方法时,表示的将该对象上锁,此时其他任何线程都无法再去访问该synchronized方法了,直到之前的那个线程执行方法完毕后(或者是抛出了异常),才将该对象的锁释放掉,其他线程才有可能再去访问该synchronized方法。
如果一个对象有多个synchronized方法,某一时刻某个线程已经进入到了某个synchronized方法,那么在该方法没有执行完毕前,其他线程是无法访问该对象的任何synchronized方法的。

不可以 ,但是在synchronized方法引用了一个全局的变量,synchronized方法

还没有运行完成的期间,在另外的一个方法中就可以修改synchronized方法的这

个变量

例如:A和B 一起去吃饭,在进一个大门,A站在门口不进去,B就不能进去,
但是现在有个专门的老师通道,C老师和B玩得好,C就可以把B带从老师通道进去

应该可以吧,只是锁住了这段信息