Effective Java - 慎用延遲初始化

第83條 慎用延遲初始化

  1. 延遲初始化降低了初始化類或者創(chuàng)建實(shí)例的開銷,卻增加了訪問被延遲初始化的域的開銷

  2. 在大多數(shù)情況下,正常的初始化要優(yōu)先于延遲初始化

  3. 如果出于性能的考慮而需要對靜態(tài)域使用延遲初始化,就使用 lazy initialization holder class 用法

    private static class FieldHolder {
        static final FieldType field = computeFieldValue();
    }
    private static FieldType getField() { return FieldHolder.field; }
    

思考

  1. 延遲初始化有點(diǎn)像單例模式。目前來看最推薦的實(shí)現(xiàn)單例模式的方法就是使用枚舉。當(dāng)然全局來考慮的話,最優(yōu)的方式還是直接正常初始化類比較好。如果非要使用延遲初始化,可以考慮使用枚舉

第84條 不要依賴于線程調(diào)度器

  1. 任何依賴于線程調(diào)度器來達(dá)到正確性或者性能要求的程序,很有可能都是不可移植的
  2. 編寫健壯,響應(yīng)迅速的可移植程序的最佳方法是確??蛇\(yùn)行線程的平均數(shù)量不會(huì)明顯大于處理器數(shù)量
  3. 如果線程沒有在做有意義的工作,就不應(yīng)該運(yùn)行
  4. 線程優(yōu)先級(jí)是 Java 平臺(tái)上最不可移植的特征了

思考

  1. 依賴線程調(diào)度器就是在依賴JVM,這其實(shí)是很容易出問題的,一般也不會(huì)有人這么用
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容