久久r热视频,国产午夜精品一区二区三区视频,亚洲精品自拍偷拍,欧美日韩精品二区

您的位置:首頁技術文章
文章詳情頁

關于java集合LinkedList的實現問題

瀏覽:108日期:2023-10-27 08:23:32

問題描述

public E removeLast() { final Node<E> l = last; if (l == null)throw new NoSuchElementException(); return unlinkLast(l);}

last為成員變量,為什么不直接在方法里使用,而是賦值給一個final的局部變量?

問題解答

回答1:

看了下代碼

transient Node<E> last;

last 是 transient 的吧如果把他賦值給一個局部 final 變量就不需要每次使用 last 都 check value 了吧

回答2:

部分原因是這樣做能保證線程安全。假設這個方法不用 l 變量而是直接引用 last 成員,那么判斷就變成了 if(this.last == null)。如果通過判斷之后的瞬間,last 被賦值成了 null,那么下一句 unlinkLast(this.last) 就會出現未知的結果。

標簽: java
相關文章:
主站蜘蛛池模板: 突泉县| 修文县| 扎兰屯市| 旌德县| 巴塘县| 宿迁市| 荥阳市| 东辽县| 伊金霍洛旗| 芮城县| 峨边| 普兰店市| 任丘市| 忻州市| 银川市| 浠水县| 新乡市| 荆门市| 五常市| 昭觉县| 锦州市| 都匀市| 巨野县| 班玛县| 呼伦贝尔市| 商都县| 邵阳县| 塔城市| 汾阳市| 渝中区| 清丰县| 琼海市| 西宁市| 博客| 鹤壁市| 金华市| 高安市| 辽源市| 南和县| 青海省| 阜康市|