龙空技术网

java中哪些变量会出现线程安全问题

小瓜瓜666 194

前言:

目前咱们对“多线程局部变量会不会互相影响”大约比较关怀,看官们都需要分析一些“多线程局部变量会不会互相影响”的相关文章。那么小编在网摘上搜集了一些对于“多线程局部变量会不会互相影响””的相关知识,希望看官们能喜欢,看官们一起来了解一下吧!

java中有三大变量:

1.实例变量:在堆中

2.静态变量:在方法区中

3.局部变量:在栈中

以上三大变量中:

局部变量永远都不会出现线程安全问题。因为局部变量不共享。(一个线程一个栈)。局部变量在栈中,所以局部变量永远不会共享。

实例变量在堆中,堆中只有一个。

静态变量在方法区中,方法区中只有一个。

堆和方法区都是多线程共享的,所以可能存在线程安全问题。

然后一个变量需要满足以下三个条件,才会出现多线程安全问题:

1、多个线程并发使用这个变量

2、这个变量被共享

3、对共享的变量有修改操作

必须满足以上三个条件,变量才会存在线程安全问题。所以以后我们在定义变量的时候,能定义成局部变量的尽量定义成局部变量,这样能减少很多的线程安全问题。

以上观点都是个人总结,如有不对的希望各部大神留言讨论。

标签: #多线程局部变量会不会互相影响 #java静态变量线程安全吗