synchronized是Java中的關(guān)鍵字执赡,是一種同步鎖勋功。它修飾的對象有以下幾種:
- 修飾一個代碼塊怜庸,被修飾的代碼塊稱為同步語句塊馏鹤,其作用的范圍是大括號{}括起來的代碼,作用的對象是調(diào)用這個代碼塊的對象款侵;
public void test() {
synchronized(this){
System.out.println("test開始..");
}
}
- 修飾一個方法末荐,被修飾的方法稱為同步方法,其作用的范圍是整個方法新锈,作用的對象是調(diào)用這個方法的對象甲脏;
public synchronized void test() {
System.out.println("test開始..");
}
- 修改一個靜態(tài)的方法,其作用的范圍是整個靜態(tài)方法妹笆,作用的對象是這個類的所有對象块请;
public static synchronized Singleton newInstance(){
if(null == instance){
instance = new Singleton();
}
return instance;
}
- 修改一個類,其作用的范圍是synchronized后面括號括起來的部分拳缠,作用主的對象是這個類的所有對象墩新。
public static Singleton getInstance() {
if (instance == null) {
synchronized (Singleton.class) {
if (instance == null) {
instance = new Singleton();
}
}
}
return instance;
}