类操作自己的静态变量引发的线程安全问题

今日看了一个关于线程安全的问题,调用关系如下。 移至回收站

main–>classA.methodA–>methodA–>a;

其中a为静态变量,因为静态变量是在堆中声明的,堆变量线程间共享,所以可能存在不同线程对同一内存地址进行操作,引发线程安全问题。

外部调用的classA每次内存地址都不同,无论classA的变量为基础数据类型还是对象类型,如果声明为静态变量都会引发线程安全问题。所以可以理解为静态变量存储在堆中供多线程间直接调用,当多线程时,自身实例调用了其他实例的堆内存中的值引发线程安全问题。