美文网首页
synchronized关键字

synchronized关键字

作者: __0123 | 来源:发表于2019-01-21 19:34 被阅读0次

一、synchronized的两种用法

    1、对象锁形式

        a、同步代码块(自己指定所对象)

            synchronized (this){}

        b、普通方法锁(默认锁对象为this当前实例对象)

            public synchronized void method()

    2、类锁形式

        a、静态方法锁

            public static synchronized void method()

        b、(*).class锁

            synchronized (*.class){}

二、多线程访问同步方法的7种具体情况

    1、两个线程同时访问一个对象的同步方法 

            没有拿到锁的线程必须等待。(类SynchronizedObjectMethod3)

    2、两个线程访问的是两个对象的同步方法

            每个对象都对应有自己的一把锁,不同对象(在此特指实例)之间互不影响。互不影响,无须线程等待。

    3、两个线程访问的是synchronized的静态方法

            同一把锁,需要线程等待。虽然是不同的实例,但是所对应的锁对象是同一把。参考代码类(创建两个实例!)

    4、同时访问同步方法和非同步方法

            互不影响,无须线程等待。(类SynchronizedYesAndNo6)

    5、访问同一个对象的不同的普通同步方法

            同一把锁,需要线程等待。(类SynchronizedDifferentMethod7)

    6、同时访问静态synchronized方法和非静态synchronized方法

            互不影响,无须线程等待。(类SynchronizedStaticAndNormal8)

    7、方法抛异常后,会释放锁

相关文章

网友评论

      本文标题:synchronized关键字

      本文链接:https://www.haomeiwen.com/subject/muncjqtx.html