先来看一段代码,看一下执行结果是多少?
示例:启动两个线程,每个线程中让静态变量count循环累加100次
public class CAS {
public static int count=0;
public static void main(String[] args) {
//开启两个线程
for(int i=0;i<2;i++){
new Thread(
new Runnable() {
@Override
public void run() {
try{
Thread.sleep(10);
}catch (InterruptedException e){
e.printStackTrace();
}
//每个线程当中让count值自增100次
for(int j=0;j<100;j++){
count++;
}
}
}
).start();
}
try{
Thread.sleep(2000);
}catch (InterruptedException e){
e.printStackTrace();
}
System.out.println("count="+count);
}
}
结果一定是200吗?显示是不一定的,因为是非线程安全的。
解决方案那??
通常情况下我们首先想到的是加synchronized同步锁,如下: