类变量:(共享)
static
实例变量:(共享)
属性
局部变量:(私有)
方法体,和方法中的变量
方法体上的如果是实例或共享变量(加方法锁,原子类,Lock锁)。
在 Java 中,方法的参数本身是线程安全的,因为每个线程都有自己的栈帧,方法的参数是存储在栈帧中的局部变量,每个线程都会在自己的栈帧中创建方法的副本参数。这意味着不同线程在调用同一个方法时,会使用各自独立的方法参数,彼此不会相互影响,因此不存在并发问题。
例如,下面是一个简单的 Java 方法:
java
复制代码
public void process(int number) { // 在这里处理 number 参数 }
当不同线程调用 process 方法时,每个线程都会在自己的栈帧中创建 number 参数的副本,并在方法中使用这个副本,因此不同线程之间不会互相影响。
然而,如果方法中涉及到共享的可变状态(例如静态变量、实例变量等),那么就可能会出现并发问题。在这种情况下,需要采取额外的措施来确保对共享状态的访问是线程安全的,例如使用同步机制(synchronized、ReentrantLock 等)、并发容器(ConcurrentHashMap、CopyOnWriteArrayList 等)、原子类(AtomicInteger、AtomicReference 等)等。