线程同步之synchronized关键字 synchronized关键字怎么使用? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 synchronized{}synchronized(flag){} 例如 public synchronized void f(){}那么这个方法在有对象访问他时就被加锁了只有等该对象访问完毕后其他对象才能访问它 还是举例子吧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 嗯,这个说得很清楚,需要根据实际的业务需求使用~!现在jdk1.5(含)版本以上的都有一个线程处理的API(java.util.concurrent),可以使用API就无需考虑那么多啦,API都封装好了~! 看这里http://lavasoft.blog.51cto.com/62575/27069/ 比较两个数组并合并 为什么同一个字符会有2个编码???只有4行的小程序,高手进来看看 需求求助 是Hibernate的缓存在搞鬼吗? JTable的刷新方法怎么写 jndi问题,程序报Cannot load JDBC driver class 'null' 求大神~~解救 线程转换的问题 关于异常的问题 请为我解释一下这条题目,谢谢 Build fat jar打包工具的用法 Java swing 异常 0>=0
synchronized(flag){}
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
现在jdk1.5(含)版本以上的都有一个线程处理的API(java.util.concurrent),
可以使用API就无需考虑那么多啦,API都封装好了~!
http://lavasoft.blog.51cto.com/62575/27069/