final关键字通常被用来修饰不希望被修改的变量,在多线程环境中,它通过保证指令有序性起作用,即如果一个对象在初始化期间有可能被其他线程访问,那么就是不安全的,final关键字防止了指令重排,保证对象创建完成之后才会被其他线程调用。
也可以这么理解,对于那些不被修改的变量,它们天生就是线程安全的,但唯一会出现问题的点就是在对象初始化的过程中它们被其他线程访问到。用final关键字修饰这些变量,就彻底保证了它们的线程安全性。
final关键字通常被用来修饰不希望被修改的变量,在多线程环境中,它通过保证指令有序性起作用,即如果一个对象在初始化期间有可能被其他线程访问,那么就是不安全的,final关键字防止了指令重排,保证对象创建完成之后才会被其他线程调用。
也可以这么理解,对于那些不被修改的变量,它们天生就是线程安全的,但唯一会出现问题的点就是在对象初始化的过程中它们被其他线程访问到。用final关键字修饰这些变量,就彻底保证了它们的线程安全性。