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

[复制链接]
查看11 | 回复5 | 2011-8-28 11:34:36 | 显示全部楼层 |阅读模式
一个线程进入一个对象的synchronized方法后,即获得了这个对象的锁,也就是占有了这个对象。这个对象的其他synchroized方法和方法块,是不能被其他线程所访问的。但是,如果这个对象的非synchroized方法,是可以被其他对象所访问的。...
回复

使用道具 举报

千问 | 2011-8-28 11:34:36 | 显示全部楼层
可以进入其他非synchronized的方法,synchronized的方法不可以的!Java中的每个对象都有一个锁(lock)或者叫做监视器(monitor),当访问某个对象的synchronized方法时,表示的将该对象上锁,此时其他任何线程都无法再去访问该synchronized方法了,直到之前的那个线程执行方法完毕后(或者是抛出了异常),才将该对...
回复

使用道具 举报

千问 | 2011-8-28 11:34:36 | 显示全部楼层
访问同一个object的synchronized方法时,哪个线程先执行带有synchronized关键字的方法,哪个线程就持有该方法所属对象的锁Lock,其他对象只能呈等待状态,但是,另一个线程可以以异步的方式调用object对象中的非synchronized方法。如果一个线程访问一个object的synchronized方法时,其他线程对该object...
回复

使用道具 举报

千问 | 2011-8-28 11:34:36 | 显示全部楼层
如果其他方法前加了synchronized关键字,就不能,如果没加synchronized,则能够进去。如果这个方法内部调用了wait(),则可以进入其他加synchronized的方法。如果其他方法加了synchronized关键字,并且没有调用wai方法,则不能。...
回复

使用道具 举报

千问 | 2011-8-28 11:34:36 | 显示全部楼层
可以,synchronized来放到方法,那么只对方法起作用。对其他的不起作用海枫科技...
回复

使用道具 举报

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

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行