1.线程局部变量 和局部变量有什么区别?
之前看别人分析如何解决SimpleDateFormat 线程不安全的问题。
其中的一个方法是创建局部变量,需要用到SimpleDateFormat 的时候new 一个。
但是这种方法开销太大,太浪费,不停的new和销毁。建议是设置SimpleDateFormat 为线程局部变量,每个线程一个SimpleDateFormat。
刚开始不懂局部变量和线程局部变量有什么不一样。线程不是也一样是调用方法吗,这样在方法内创建的变量就是线程局部变量吗?
后来知道一个线程是可以调用多个方法的。所以线程中的局部变量和方法内的局部变量的使用范围不一样。关键就在于线程可以穿越多个方法。这些方法就可以共享一个线程局部变量了。
同时一个疑惑是如果是使用线程池呢?线程回收的时候会清空其中的变量吗?