synchronized 之我见

本文详细介绍了Java中的synchronized关键字,包括其作为同步锁的作用及多种使用方式,如锁定类、锁定类实例等,并通过示例代码说明不同应用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

                       深刻理解synchronized


  (1)sychronized的字面意思是同步。他在java中的作用是保证多线程中数据的同步。
  (2)你应该把synchronized理解为同步锁子。他的精髓是你锁定的对象是什么。
       根据锁定的对象的不同大概有这样几种用法:
       <1>  锁定类:
            第一种情况:
            public class Test{
                 
               public void method(){


                  synchronized(Test.class){
                    
                    // 需要同步的代码
                    }


                  }


            }
           第二种情况:
          public class Test{


             public  synchronized static void method(){


                // 需要同步的代码
               }




             }
         这两种情况的效果是一样的同步的都是本类,也就是说同一时间,不同线程中,
  只有一个地方获得了本类的锁,在执行其中的一个类同步代码部分。
   <2> 锁定类的实例。
       第一种情况:
       public class Test{


       public synchronized void method(){
          // 需要同步的代码
         }
       }
      第二种情况:
      public  class Test{
     
       public void method(){


       synchronized(this){
       // 需要同步的代码
       }
       }
      }
      这两种情况的效果是一样的同步的都是本类,也就是说同一时间,不同线程中,
  只有一个地方获得了本类的实例的锁,在执行其中的某个类的同一个实例的同步代码部分。
     第三种情况:
     public class Test{

byte[] lock = new byte[0];


        public void method(){
         
          synchronized(lock){
            // 同步的代码
           }


        }


    } 
   本质上这三种情况是一样的都是获得的对象的实例的锁。
  参考:(1)http://blog.youkuaiyun.com/yaerfeng/article/details/7254734
        (2)http://my.oschina.net/20076678/blog/173166     

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值