首先什么事synchronized: java中内置的语言级的同步原语,说白了,就是让进程间访问 竞争资源时,能够同步.(不要告诉我你不知道什么是同步,同步就是:我在访问该资源,你也想访问,但我先来,你就给我等着.那,你是不是又想问什么是异步:我呵呵一笑,你觉得呢.说白了,就是:你想访问某个资源,结果该资源被其他人占有了.你心里默默的抱怨了几句,然后就去干其他事情了.)
那synchronized怎么使用呢,让我细细到来:
1. synchronized包括两种用法:synchronized 方法和 synchronized 块
首先来看看, synchronized 方法:
public synchronized void getMoney(int moeny) {
while(true)
System.out.println(moeny);
}
public synchronized void getMoney(xxx.class) {
while(true)
System.out.println(moeny);
}
那你想问这两者有什么区别:
前者: 同步加锁的是对象。(如果是不同的对象,则各个对象之间没有限制关系。)
后者: 类的同步
2.synchronized 块的使用:
public void getMoney (int moeny) {
synchronized(this) {
while(true) System.out.println(moeny);
}
}
public void getMoney (moeny) {
synchronized(xxx.class) {
while(true)
System.out.println(moeny);
}
}
3.synchronized 方法和 synchronized 块的区别:
其实synchronized 方法和 synchronized 块功能都是一样的, synchronized 块就是灵活性高些,效率高些.
如果还是不懂点击下面链接,但要耐心看哦:
http://www.cnblogs.com/devinzhang/archive/2011/12/14/2287675.html