初学者求教~~请问如果方法1定义时加入了同步,而方法1里面调用了方法2,当执行到方法2时,此时方法1的锁被解开了吗?
[quote]便问下:您是怎么测试是否等待的~~嘿嘿~~多谢 [/quote]
这个开几个线程访问一直打印!等待的时候是不打印的! 等待结束 继续打印!
[quote]
有个疑问:如果方法2只能有方法1调用,这样的话如果方法2不是同步的,当被调用时,其他地方是不是也就等待了[/quote]
随意调用! 你可以试试
同步是针对于不同的线程中执行这个同步方法时,它们之间会形成互斥,
你这是同一个线程,是不存在这个锁的问题,是可以正常调用的
同步不是针对某个方法,而是针对对象的。
加锁也是对方法中的对象进行加锁,所以我认为既是调用了方法二,对象的锁没有释放,还是要看对像的状态才可以决定是否已经释放锁了。
需要等到方法1返回时才将释放锁.由于方法2是由方法1调用所以此时方法1还在执行中,并不会释放锁
[quote]当执行到方法2时,此时方法1的锁被解开了吗? [/quote]
1.0 首先 方法1 里面调用 方法2 方法1 还能提前释放?除非系统问题
2.0 个人做实验如果没记错的话!
方法2 如果不是同步的 随便调用!
如果方法2 是同步的 !被调用时 其他地方等待!