1. synchronized(.class)只要是訪問這個類的方法,就會同步,不管用這個類創(chuàng)建了幾個對象!一般單列模式常用
例如:
private static volatile SingIn instance=null; private SingIn (){ } public static SingIn getInstance(){ if(instance==null){ synchronized(SingIn .class){ if(instance==null){ instance=new SingIn (); } } } return instance; }
2. synchronized(Object x),通過對象同步,注意必須是同一個對象
一般在多線程中訪問同一個對象時,在run方法中用到
例如:
@Override public void run(){ synchronized(Object x){ x .setDeviceName(“a”); }}
3 .synchronized(this) 指的是對象本身同步,一般在定義對象的方法時可以用,當只有訪問同一對象,才會同步,和synchronized(Object x)功能類似。
例如: