44问答网
所有问题
为什么 线程里面的变量必须是final
如题所述
举报该问题
推荐答案 2017-10-30
为什么在匿名内部类中引用外部对象要加final修饰符呢,因为,在匿名内部类中引用的外部对象受到外部线程的作用域的制约有其特定的生命周期,以线程为例,当外部的变量生命周期已经完结之后,内部的线程还在运行,怎么样解决这个外部生命周期已经结束而在内部却需要继续使用呢,这个时候就需要在外部变量中添加final修饰符,其实内部匿名类使用的这个变量就是外部变量的一个“复制品”,即使外部变量生命周期已经结束,内部的“复制品“依然可用。
温馨提示:答案为网友推荐,仅供参考
当前网址:
http://44.wendadaohang.com/zd/YR6RRVR6RDWR3KDV3KR.html
相似回答
线程中为什么要
用
final
修饰
变量
答:
final
的作用就是意味的你修饰的
线程
可改变,防止了被无意
中的
更改所造成的线程错错误
Java内部类引用外部类
中的
局部
变量为何必须是final
问题解析
答:
那么该变量必须申明为final类型,百思不得其解,
后来想到应该是生命周期的原因,因为方法内定义的变量是局部变量,离开该方法,变量就失去了作用
,也就会自动被消除,而内部类却不会离开它所在方法就失去作用,它有更广的生命周期,
static修饰
的变量是线程
安全的吗,
final
呢
答:
final修饰的变量是线程安全的,因为final变量在初始化之后就不能再被修改,不存在并发访问问题
。final变量在多线程环境下可以被同时访问,不需要额外的线程同步机制。需要注意的是,如果final变量引用了一个可变对象,那么该对象本身并不是线程安全的,需要采取相应的线程同步措施来保证其线程安全。
java
final是什么
意思?
答:
除此之外,
final还可以用于线程安全性的保证
。如果一个对象被声明为final,那么它就不可变,从而保证了线程的安全性。此外,在某些情况下,final成员变量的赋值可以在构造方法中进行。这样可以避免在类的任意方法中修改它,防止对程序造成影响。Java final与其它关键字的区别 Java中还有其它类似final的关键字...
大家正在搜
线程局部变量是什么
怎么取线程中的变量
java final变量
实例变量可以是final
final修饰的变量
线程间的变量访问
java两个线程共享一个变量
final变量
final变量不能被赋值
相关问题
多线程中,共享的变量为何在main()里必须用final修饰
线程中为什么要用final修饰变量
JAVA接口中成员变量必须是final类型的,为什么
Java内部类引用外部类中的局部变量为何必须是final问题...
为什么局部内部类只能访问final变量
java 中为什么引用外部类的变量和方法都要是final内型...
为什么android的成员变量要定义final才能在方法里面...
java中的"final"关键字在多线程的语义中,有什么含义