84669 人が学習中
152542 人が学習中
20005 人が学習中
5487 人が学習中
7821 人が学習中
359900 人が学習中
3350 人が学習中
180660 人が学習中
48569 人が学習中
18603 人が学習中
40936 人が学習中
1549 人が学習中
1183 人が学習中
32909 人が学習中
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)
となり不明な結果が発生します。