復(fù)制:
成都創(chuàng)新互聯(lián)公司專注于花山網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗(yàn)。 熱誠為您提供花山營銷型網(wǎng)站建設(shè),花山網(wǎng)站制作、花山網(wǎng)頁設(shè)計(jì)、花山網(wǎng)站官網(wǎng)定制、小程序設(shè)計(jì)服務(wù),打造花山網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供花山網(wǎng)站排名全網(wǎng)營銷落地服務(wù)。可以添加到學(xué)生類的構(gòu)造函數(shù)中,例如:
運(yùn)行時(shí)會(huì)發(fā)現(xiàn)只打印一次
大致原理:
靜態(tài)變量是類變量,第一次使用類時(shí)只初始化一次。類裝入器中會(huì)有一個(gè)鎖,以防止類被多次初始化。靜態(tài)字段和靜態(tài)代碼塊只執(zhí)行一次。從編譯器的角度來看,編譯時(shí)編譯器會(huì)按順序收集靜態(tài)字段和靜態(tài)代碼塊,然后將其放入生成的<cinit>特殊方法中,初始化類時(shí)會(huì)調(diào)用<cinit>方法。
應(yīng)用程序:
對(duì)于您的問題:
在前一個(gè)線程初始化之后,判斷它是否已成功初始化,并直接獲取結(jié)果
您的問題有點(diǎn)有趣。前一個(gè)線程的初始化可以說是取鎖,然后執(zhí)行鎖代碼。當(dāng)鎖退出時(shí),鎖代碼的結(jié)果將完全同步,這是鎖的一個(gè)特性(比如內(nèi)存可見性)。然后下一個(gè)結(jié)果就是正常結(jié)果
靜態(tài)變量。靜態(tài)變量之所以是靜態(tài)的,是因?yàn)樗牡刂吩诔绦虻恼麄€(gè)生命周期中都是靜態(tài)的。也就是說,整個(gè)程序只保留一個(gè)副本。static關(guān)鍵字允許它在不同的函數(shù)調(diào)用之間保持其值。如果靜態(tài)變量的值在被訪問后發(fā)生變化,它將保留新值。如果再次訪問該變量,它將保持最新的值classA{公共:私人:}inta::I=1//必須這樣初始化
首先,只能靜態(tài)添加成員變量。
何時(shí)添加?
如果當(dāng)前類的任何對(duì)象需要共享此成員,將添加該對(duì)象。否則,將不添加。
JVM加載靜態(tài)成員時(shí),加載時(shí)間比非靜態(tài)成員早。
2.在整個(gè)JVM生命周期中,靜態(tài)成員總是只加載一次,這也是單例模式的根源。
3.初始化靜態(tài)成員后,它將始終被類對(duì)象引用,這意味著它的地址永遠(yuǎn)不會(huì)被GC回收。因此,建議不要定義太多。
4.靜態(tài)成員總是將引用保存在方法區(qū)域的靜態(tài)區(qū)域中,因此引用必須由多個(gè)線程共享。因此,在編寫靜態(tài)成員時(shí),應(yīng)特別注意線程安全。
以上是我的淺見。如果有任何誤解,請(qǐng)互相討論。
網(wǎng)站欄目:c語言staticint的值會(huì)變嗎static變量什么時(shí)候初始化?-創(chuàng)新互聯(lián)
文章鏈接:http://www.rwnh.cn/article40/dsdoeo.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供做網(wǎng)站、外貿(mào)網(wǎng)站建設(shè)、搜索引擎優(yōu)化、定制網(wǎng)站、小程序開發(fā)、響應(yīng)式網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容