1.synchronized用在静态方法的时候,表示执行这个方法时,将会把调用该方法的对象给锁住。
2.synchronized(this){.....代码块......}的时候,表示执行synchronized内的代码时,锁住this对象,也就是当前代码所在类的对象。
3.synchronized(other_class){.....代码块......}的时候,表示执行synchronized内的代码时,锁住的是括号内的对象,并不是当前代码所有类的对象。
- public void method(SomeObject so) {
- synchronized(so)
- {
- //…..
- }
- }
4.加上synchronized关键字的方法或者代码,执行过程中,其他线程不能再执行该方法或代码,但可以执行被锁住对象的其他方法或代码。
以上内容参考这里:http://developer.51cto.com/art/200908/143504.htm