关于java synchronized关键字的问题


public static void  test (){
int a=1;

for (List b:list){
  a++;
}

}

我现在想要把集合改成并行流的方法,会出现线程安全问题,所以想给a加一个关键字但是我直接把a++加上代码块不知道关键字后面的小括号里应该写什么

可以直接在方法声明上加synchronized,但是因为是static方法,这会导致锁住整个类的static方法。如果你只想锁住a++这一段,那么你需要在类中定义一个static变量,然后synchronized(静态变量)

int a改成AtomicInteger a

方法上面加synchronized