6

Java JREでコードを見ました

private final ReentrantLock lock;
public E poll() {
        final ReentrantLock lock = this.lock;
        lock.lock();

ロックがプライベート変数にキャプチャされるのはなぜですか? 私は単純に期待します

public E poll() {
        lock.lock();
4

1 に答える 1

0

主に、最大のパフォーマンスを保証することです。これは実際にはマイクロ最適化ですが、おそらくパフォーマンスに敏感なコードで行われているため、作成することもできます。

また、使用しているロック参照が変更されないように十分注意する必要があります。確かにフィールドを作成しますが、ローカル参照finalを取ることはローカルで明示的です。final

于 2012-04-16T19:52:31.603 に答える