程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> Java多線程下的單例形式參考

Java多線程下的單例形式參考

編輯:關於JAVA

Java多線程下的單例形式參考。本站提示廣大學習愛好者:(Java多線程下的單例形式參考)文章只能為提供參考,不一定能成為您想要的結果。以下是Java多線程下的單例形式參考正文


單例有多種的寫法,本例是懶漢式單例的一種寫法。在高並發情況下須要留意的是:

1.單例在並發拜訪並挪用其響應的getInstance辦法的時刻也會形成創立多個實例對象,加鎖是需要的。

2.應用synchronized是比擬好的處理計劃,長處是代碼簡練,缺陷是在拋出異常的時刻不克不及處置保護使體系處於優越狀況。

3.顯示的lock設定是優越的處理計劃。

應用lock的代碼以下:

package demo; 
 
import java.util.concurrent.locks.Lock; 
import java.util.concurrent.locks.ReentrantLock; 
 
/** 
 * 參考應用 
 * @author Watson_Xu 
 * @date 2012-1-8 下晝04:31:09 
 */ 
public final class SingletonContext { 
  private static SingletonContext sc = null; 
  private SingletonContext() { 
   
  } 
   
  private static Lock lock = new ReentrantLock(); 
  public static SingletonContext getInstance() { 
    if(sc == null) { 
      lock.lock(); 
      if(sc == null) { 
        try{ 
          sc = new SingletonContext(); 
        } finally { 
          lock.unlock(); 
        } 
      } 
    } 
    return sc; 
  } 
}

應用synchronized的時刻代碼以下:

package demo; 
 
/** 
 * 參考應用 
 * 
 * @author Watson_Xu 
 * @date 2012-1-8 下晝04:31:09 
 */ 
public final class SingletonContext { 
  private static SingletonContext sc = null; 
 
  private SingletonContext() { 
 
  } 
 
  public static synchronized SingletonContext getInstance() { 
    if(null == sc) { 
      sc = new SingletonContext(); 
    } 
    return new SingletonContext(); 
  } 
} 

檢查更多Java的語法,年夜家可以存眷:《Thinking in Java 中文手冊》、《JDK 1.7 參考手冊官方英文版》、《JDK 1.6 API java 中文參考手冊》、《JDK 1.5 API java 中文參考手冊》,也願望年夜家多多支撐。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved