• 牛客网Java刷题知识点之同步方法和同步代码块的区别(用synchronized关键字修饰)


      不多说,直接上干货!

    扩展博客

    牛客网Java刷题知识点之多线程同步的实现方法有哪些

    为何要使用同步? 

        java允许多线程并发控制,当多个线程同时操作一个可共享的资源变量时(如数据的增删改查),  将会导致数据不准确,相互之间产生冲突,因此加入同步锁以避免在该线程没有完成操作之前,被其他线程的调用,从而保证了该变量的唯一性和准确性。
     
     
     
     
     
    什么是同步方法 ,什么是同步代码块?
      用synchronized关键字修饰的方法。 用synchronized关键字修饰的语句块。
     
     
      在java代码中,每一个对象都拥有一把锁,使用synchronzied关键字可以获取到对象上的锁。该关键字可以用到方法上或者代码块上。

      同步方法:(粗粒度锁):

            1.修饰一般方法: public synchronized void method (){...},获取的是当前调用               对象this上的锁

            2.修饰静态方法: public static synchronized void method (){...},获取当前类的             字节码对象上的锁

     

      即在方法的声明之前加入synchronized 关键字

    public  synchronized  void  mutiThreadAccess();

      

     

      同步代码块(细粒度锁):

             synchronized ( obj ) {...},同步代码块可以指定获取哪个对象上的锁。

    synchronized(syncObject) {
            //访问syncObject的代码
    }
     
     
      同步代码块使用的锁是任意对象Object。
      同步方法使用的锁是this。
      使用静态修饰的同步函数使用的是该类所在的字节码文件对象,格式为类名.class。
     
     
      
      同步方法默认用this或者当前类class对象作为锁;
      同步代码块可以选择以什么来加锁,比同步方法要更细颗粒度,我们可以选择只同步会发生同步问题的部分代码而不是整个方法;
     
     
       
      同步方法默认用this或者当前类class对象作为锁;
      同步代码块可以选择以什么来加锁,比同步方法要更细颗粒度,我们可以选择只同步会发生同步问题的部分代码而不是整个方法;
      同步方法使用关键字 synchronized修饰方法,而同步代码块主要是修饰需要进行同步的代码,用   synchronized(object){代码内容}进行修饰;
     
  • 相关阅读:
    zabbix 主被动模式
    MySQL角色(role)功能介绍
    MySQL权限管理实战
    创建索引,这些知识应该了解
    MySQL锁等待与死锁问题分析
    Navicat操作MySQL简易教程
    职场里,对数据库要有敬畏之心!
    MySQL字段默认值设置详解
    MySQL查看及杀掉链接方法大全
    MySQL字段类型最全解析
  • 原文地址:https://www.cnblogs.com/zlslch/p/7417339.html
Copyright © 2020-2023  润新知