日期:2014-05-20  浏览次数:20670 次

线程问题,关于synchronized



synchronized void m1()这边锁住的是整个对象还是这个方法,是不是当有个线程在执行tt的m1()的时候,别的线程就不能执行tt的其它方法,要等人家执行完m1()后放了锁,才能执行tt的方法,实在是搞不清楚

还有,有的程序有synchronized(this){.....},这又是什么意思???

------解决方案--------------------
线程运行到synchronized标记的方法或代码块的时候都要取得同步对象的锁,如果有别的线程已经在用这个锁了,后续的线程运行到这里就必须等待。

synchronized标记非静态方法时同步对象是this,如果是静态方法,这个同步对象就是 类.class,如果是块就是()中的对象