ホームページ  >  に質問  >  本文

JavaコレクションLinkedListの実装上の問題について

リーリー

last はメンバー変数です。メソッド内で直接使用せずに、最後のローカル変数に代入してみてはいかがでしょうか?

过去多啦不再A梦过去多啦不再A梦2674日前919

全員に返信(2)返信します

  • typecho

    typecho2017-06-23 09:16:09

    コードを見た

    リーリー

    lastは一時的なものですよね?ローカルのfinal変数に代入すれば、lastを使うたびに値をチェックする必要がなくなりますよね?

    返事
    0
  • 巴扎黑

    巴扎黑2017-06-23 09:16:09

    その理由の 1 つは、スレッドの安全性を確保するためです。このメソッドが l 変数を使用せずに最後のメンバーを直接参照すると仮定すると、判定は if(this.last == null)。如果通过判断之后的瞬间,last 被赋值成了 null,那么下一句 unlinkLast(this.last) となり不明な結果が発生します。

    返事
    0
  • キャンセル返事