由于并发问题,局部变量成为最终变量或有效最终变量的原因。在 jls 8 规范中,有以下规定。
对有效最终变量的限制禁止访问动态更改的局部变量,捕获这些变量可能会引入并发问题。
一切都很好,很甜蜜,但我做了一个小实验。如果我同步该方法,这将消除动态更改局部变量的可能性,因为我保证只有一个线程可以执行此代码。但编译抛出了一个错误,指出它必须是最终的或有效的最终的。
逻辑对吗?
考虑以下代码:
public synchronized void capture() {
int localVariable = 100;
Interf i = (text) -> System.out.println(text + localVariable);
i.m1("This local variable is: ");
localVariable = 1000;
}
}
阿晨1998
慕村225694
婷婷同学_
相关分类