请问:
个人理解:
在多线程中 多个不同对象同时访问同一个同步方法时 一个时间段只能有一个对象可以访问得到 但这样会产生共享问题 因为对于每个对象而言 这个同步方法的锁都是这个对象自己的对象锁 也就会造成多个对象拥有这个方法的不同对象锁  另外在多线程中 当使用一个对象在不同线程中访问同一个同步方法 一个时间段只能有一个线程可以访问 就是获得锁的线程 对吗 请帮忙改改
谢谢

解决方案 »

  1.   

    此回复为自动发出,仅用于显示而已,并无任何其他特殊作用
    楼主【wsm1204】截止到2008-07-24 09:06:38的历史汇总数据(不包括此帖):
    发帖的总数量:16                       发帖的总分数:840                      每贴平均分数:52                       
    回帖的总数量:11                       得分贴总数量:1                        回帖的得分率:9%                       
    结贴的总数量:16                       结贴的总分数:840                      
    无满意结贴数:1                        无满意结贴分:40                       
    未结的帖子数:0                        未结的总分数:0                        
    结贴的百分比:100.00%               结分的百分比:100.00%                  
    无满意结贴率:6.25  %               无满意结分率:4.76  %                  
    敬礼!
      

  2.   

    这个也要看你加的是什么锁了,如果你直接在方法上写synchronized 或者直接使用synchronized (this)当然会出现你说的那样一个共享对象的所有方法都只能一个线程访问,比如: A方法,B方法,一个线程访问了A方法,那么其他线程就不能访问A或者B,因为他们都锁住了拥有这个方法的对象。  但是如果有时我们访问A不一定需要锁住B,所以可以换一种思路,在这个共享对象中申明一个锁,比如 Object lock=new Object();
    在方法体内部对需要进行加锁的地方使用synchronized (lock){。。}  这样就没问题了。而且需要的话,还可以加多个不同的锁。