• synchronized关键字


    参考链接:https://blog.csdn.net/weiyongxuan/article/details/46493803

    https://blog.csdn.net/qq_34902522/article/details/76262812先来了解几个定义:

    临界区:Critical Section

    临界区是一个用以访问共享资源的代码块,这个代码块在同一时间内只允许一个线程执行。

    同步:

    1、当一个线程试图访问一个临界资源时,它将使用一种同步机制来查看是不是已经有其他的线程进入临界区。

    2、如果临界区没有其他的线程,他就可以进入临界区。如果已经有线程进入临界区,它就被同步机制挂起,直到进入的线程离开临界区。

    3、如果在等待临界区的线程不只一个,jvm就会选择其中一个,其他的继续等待。

    java采用两种基本的同步机制:

    一种是:synchronized关键字机制

    另一种是:lock接口及其实现

    synchronize关键字机制

    synchronize修饰方法

    1、使用synchronize关键字的方法性能比较低

    2、每一个使用synchronize修饰的方法都是临界区

    3、使用synchronize修饰的对象,那么同一时间只能有一个执行线程访问,如果其他线程试图访问这个对象的其他方法,都将被挂起

    4、synchronize修饰静态方法会怎么样?

    使用synchronize修饰的静态方法,那么同一时间只能有一个执行线程访问,但是其他线程可以访问这个对象的非静态方法。

    synchronize修饰代码块

    1、方法的其余部分保持在synchronize代码块之外,以获取更好的性能

    2、synchronized修饰代码块的参数是当前对象,注意是对象,不是类  

    1、java中每个对象都有同步锁,同步方法是指进入该方法时需要获取this对象的同步锁,而同步代码块则是可以指定需要获取哪个对象的同步锁

    2、无论synchronized关键字加在方法上还是对象上,它取得的锁都是对象,而不是把一段代码或函数当作锁――同步方法很可能还会被其他线程的对象访问

  • 相关阅读:
    博客园风格简单修饰(Do It Yourself)
    十大经典排序算法
    物流BOS
    算法设计
    牛客网刷题
    关于上网的问题
    Lucene&Solr
    SSM综合练习
    四十八:WAF绕过-权限控制之代码混淆及行为造轮子
    四十七:WAF绕过-漏洞发现之代理池指纹被动探针
  • 原文地址:https://www.cnblogs.com/yingpu/p/9318856.html
Copyright © 2020-2023  润新知