方法中定义的局部变量是否为线程安全的?
Posted 杀手不太冷!
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了方法中定义的局部变量是否为线程安全的?相关的知识,希望对你有一定的参考价值。
方法中定义的局部变量是否为线程安全的?
具体问题,具体分析。
比如我们就拿StringBuilder来分析吧,首先你需要明白:StringBuilder和StringBuffer都是可变的,但是StringBuffer是线程安全的,而StringBuilder是线程不安全的。为什么呢?如下图:
而StringBuilder内部没有使用同步机制,是线程不安全的。
局部变量怎么区分是不是线程安全?
如果只有一个线程操作局部变量,那么这个局部变量一定是线程安全的;如果有多个线程操作一个局部变量,这个局部变量此时也就是共享数据,这个局部变量可能是线程安全的,也可能是线程不安全的,怎么区分呢?如果这个局部变量考虑了同步机制,那么这个局部变量就是安全的,如果没有考虑同步机制,这个局部变量就是不安全的。
下面我们通过一个程序代码,来说明为什么有的局部变量是线程安全的?而有的局部变量是线程不安全的?局部变量在什么情况下会导致线程不安全问题?什么情况下线程又是安全的?如下图:
以上是关于方法中定义的局部变量是否为线程安全的?的主要内容,如果未能解决你的问题,请参考以下文章