在方法中本地分配对象成员变量有什么好处?

时间:2016-03-29 20:04:33

标签: java netty

在Netty中,我经常看到在类方法中本地分配的对象成员变量。这是一种风格问题还是有程序性的好处?

我在下面添加了一个代码段:

public ChannelFuture bind() {
    validate();
    SocketAddress localAddress = this.localAddress;
    if (localAddress == null) {
        throw new IllegalStateException("localAddress not set");
    }
    return doBind(localAddress);
}

1 个答案:

答案 0 :(得分:2)

当多线程成为一个问题时,我通常会看到这种模式。例如,如果另一个线程可能会更改成员值或在null检查后将其置零,但它仍然是在该点发生成员访问的有效用例。或者代码试图避免锁定/同步。因此,将成员复制到本地,并使用本地副本完成所有进一步的操作以防止空访问。