last はメンバー変数です。メソッド内で直接使用せずに、最後のローカル変数に代入してみてはいかがでしょうか?
コードを見た
lastは一時的なものですよね?ローカルのfinal変数に代入すれば、lastを使うたびに値をチェックする必要がなくなりますよね?
その理由の 1 つは、スレッドの安全性を確保するためです。このメソッドが l 変数を使用せずに最後のメンバーを直接参照すると仮定すると、判定は if(this.last == null)。如果通过判断之后的瞬间,last 被赋值成了 null,那么下一句 unlinkLast(this.last) となり不明な結果が発生します。
if(this.last == null)
unlinkLast(this.last)
コードを見た
リーリーlastは一時的なものですよね?ローカルのfinal変数に代入すれば、lastを使うたびに値をチェックする必要がなくなりますよね?
その理由の 1 つは、スレッドの安全性を確保するためです。このメソッドが l 変数を使用せずに最後のメンバーを直接参照すると仮定すると、判定は
if(this.last == null)
。如果通过判断之后的瞬间,last 被赋值成了 null,那么下一句unlinkLast(this.last)
となり不明な結果が発生します。