因为java8的lambda表达式,本质上是一个匿名内部类。
于是问题就转换成了,匿名内部类能访问外部类方法的局部变量吗?
答案是不行,即使有外部类的引用,也无法访问到外部类方法里面的局部变量。
因此,外部类的局部变量,就只能通过匿名内部类的构造方法传进去。
public class Day1 {
static int n=0;
public static void main(String[] args) {
Thread[] threads=new Thread[100];
for(int i=0;i<threads.length;i++){
threads[i]=new Thread(()->{
n++;
});
}
}
}