方法中定义的局部变量是否为线程安全的?

Posted 杀手不太冷!

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了方法中定义的局部变量是否为线程安全的?相关的知识,希望对你有一定的参考价值。

方法中定义的局部变量是否为线程安全的?

具体问题,具体分析。

比如我们就拿StringBuilder来分析吧,首先你需要明白:StringBuilder和StringBuffer都是可变的,但是StringBuffer是线程安全的,而StringBuilder是线程不安全的。为什么呢?如下图:

在这里插入图片描述

而StringBuilder内部没有使用同步机制,是线程不安全的。

局部变量怎么区分是不是线程安全?

如果只有一个线程操作局部变量,那么这个局部变量一定是线程安全的;如果有多个线程操作一个局部变量,这个局部变量此时也就是共享数据,这个局部变量可能是线程安全的,也可能是线程不安全的,怎么区分呢?如果这个局部变量考虑了同步机制,那么这个局部变量就是安全的,如果没有考虑同步机制,这个局部变量就是不安全的。

下面我们通过一个程序代码,来说明为什么有的局部变量是线程安全的?而有的局部变量是线程不安全的?局部变量在什么情况下会导致线程不安全问题?什么情况下线程又是安全的?如下图:

在这里插入图片描述

在这里插入图片描述

以上是关于方法中定义的局部变量是否为线程安全的?的主要内容,如果未能解决你的问题,请参考以下文章

java线程安全问题之静态变量实例变量局部变量

java线程安全问题之静态变量实例变量局部变量

java线程安全问题之静态变量实例变量局部变量

java线程安全问题之静态变量实例变量局部变量

java线程安全问题之静态变量实例变量局部变量

并发编程-线程安全策略之线程封闭