int a = 1 //全局变量
public synchronized void func(){
a = a +1 ;
System.out.println(a);
}
synchronized代表方法是同步的,没有synchronized代表是异步的
假如有两个线程(A,B)访问这段代码
一、同步情况:
A先访问,只有A执行完方法fun()后,B才能访问,打印结果A是2,B是3
二、异步情况:
A先访问,A访问时B也能访问,有可能当A执行到a= a+1时,B也访问到a=a+1,这时a的值为3
所以接下来A和B打印结果都是3