版权声明:转载请注明原文链接 https://blog.csdn.net/NVPS_wyj/article/details/82109196
在多线程并发编程中,synchronized一直是元老级角色,很多人称呼它为重量级锁。随着Java SE1.6对synchronized的优化,在一些情况下它已经没那么重了。synchronized主要由三种应用方式:作用于实例方法、作用于静态方法以及作用于代码块。
1. 作用于实例方法:
在synchronized作用于普通实例方法时,锁是当前实例对象。
public class SynchronizedDemo implements Runnable{
static int x = 0;
private synchronized void increase(){
for (int i = 0 ; i < 100000 ; i++){
x++;
}
}
@Override
public void run() {
increase();
}
public static void main(String[] args) throws InterruptedException {
SynchronizedDemo synchronizedInstance = new SynchronizedDemo();
Thread t1 = new Thread(synchronizedInstance);
Thread t2 = new Thread(synchronizedInstance);
t1.start();
t2.start();
t1.join();
t2.join();
System.out.println(x);
}
}
- 作用于静态方法: