美文网首页
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