怎么在JAVA項(xiàng)目中實(shí)現(xiàn)一個靜態(tài)單例?很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細(xì)講解,有這方面需求的人可以來學(xué)習(xí)下,希望你能有所收獲。
站在用戶的角度思考問題,與客戶深入溝通,找到永順網(wǎng)站設(shè)計(jì)與永順網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗(yàn),讓設(shè)計(jì)與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個性化、用戶體驗(yàn)好的作品,建站類型包括:成都做網(wǎng)站、網(wǎng)站建設(shè)、外貿(mào)營銷網(wǎng)站建設(shè)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣、申請域名、網(wǎng)絡(luò)空間、企業(yè)郵箱。業(yè)務(wù)覆蓋永順地區(qū)。JAVA 靜態(tài)的單例的實(shí)例詳解
實(shí)現(xiàn)代碼:
public class Printer { private Printer(){ } public static Printer newInstance(){ return CreatePrinter.mPrinter; } private static class CreatePrinter{ private final static Printer mPrinter = new Printer(); } }
因?yàn)殪o態(tài)的單例對象沒有作為類的成員變量直接實(shí)例化,因此在Printer類加載時并沒有實(shí)例化mPrinter。第一次調(diào)用newInstance() 的時候加載內(nèi)部類CreatePrinter ,該內(nèi)部類定義了一個static 類型的變量mPrinter,此時會首先初始化這個變量,由JVM 來保證其線程安全性,確保該成員變量只被實(shí)例化一次。
可見,通過使用這個方法,不僅實(shí)現(xiàn)了延遲加載,又可以保證線程安全,不影響系統(tǒng)性能。
看完上述內(nèi)容是否對您有幫助呢?如果還想對相關(guān)知識有進(jìn)一步的了解或閱讀更多相關(guān)文章,請關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝您對創(chuàng)新互聯(lián)的支持。