int a = 1 //全局变量
public synchronized void func(){
a = a +1 ;
System.out.println(a);
}
synchronized代表方法是同步的,没有synchronized代表是异步的
假如有两个线程(A,B)访问这段代码
一、同步情况:
A先访问,只有A执行完方法fun()后,……
[/Quote]
嗯,这个说得很清楚,需要根据实际的业务需求使用~!
现在jdk1.5(含)版本以上的都有一个线程处理的API(java.util.concurrent),
可以使用API就无需考虑那么多啦,API都封装好了~!
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