静态方法使用Object引用作为参数调用另一个静态方法:它是否安全?

Oom*_*ity 1 java thread-safety

我有静态方法,它在自己内部调用另一个静态方法.

例如 :

public List<Object> static first(int id){

       List<Object> list=new ArrayList<Object>();
       list.add(a);
       list.add(b);
       list.add(c);

       //calling another static method   
       second(id,list);

       return list;

}

public String static second(int id,List<Object> listRef){

       listRef.add(a);
       listRef.add(b);
       listRef.add(c);


}
Run Code Online (Sandbox Code Playgroud)

我的问题是:

多个线程public static method first(int id);使用不同的id 调用.

这是线程安全的方式还是不?因为我在方法中声明arrayList并且我的东西​​它的引用可能由其他线程共享.

问题是该数组存储在堆内存中而不是存储在单个线程堆栈中.所以我认为可能会发生许多线程共享数组引用.

Kay*_*man 10

是的,它是线程安全的.您的ArrayList是一个局部变量,并不由线程共享(除非您明确地做了一些事情来共享它).

在这种情况下,每个线程都将拥有自己的ArrayList.