Java:Java單例中的懶漢和餓漢模式


 

1.懶漢模式

懶漢模式:在類加載的時候不被初始化,懶漢式是延時加載,他是在需要的時候才創建對象。

public class JdbcUtil {

    //定義私有的引用
    private static JdbcUtil jdbcUtil;

    /**
* 不能讓外部直接創建對象
*/
    private JdbcUtil() {
    }

    public static JdbcUtil getInstance() {
        if (jdbcUtil == null) {
            jdbcUtil = new JdbcUtil();
        }
        return jdbcUtil;
    }
}

 

2.餓漢模式

餓漢模式:在類加載時就完成了初始化,但是加載比較慢,獲取對象比較快,類創建的同時就已經創建好一個靜態的對象供系統使用,以后不在改變。

public class JdbcUtil {
    //定義私有的引用
    private static JdbcUtil jdbcUtil = new JdbcUtil();

    /**
     * 不能讓外部直接創建對象
     */
    private JdbcUtil() {
    }

    public static JdbcUtil getInstance() {
        return jdbcUtil;
    }
}

 

最主要的區別:

餓漢模式由於在類創建的同時就創建了靜態對象提供給系統使用,所以是線程安全的。

懶漢模式由於延時加載,是在需要的時候才創建對象並且如果不加上synchronized,會導致對象的訪問不是線程安全的。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM