Synchronized同步锁解析

版权声明:转载请注明原文链接 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);

    }
}
  1. 作用于静态方法:

猜你喜欢

转载自blog.csdn.net/NVPS_wyj/article/details/82109196