• 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关键字加在方法上还是对象上,它取得的锁都是对象,而不是把一段代码或函数当作锁――同步方法很可能还会被其他线程的对象访问

  • 相关阅读:
    三元组数据结构
    线性表的顺序表示和实现 数据结构
    【欧拉计划1】Multiples of 3 and 5
    strcmp()与strcmpi()函数 C语言
    指向函数的指针 C语言
    const限定符声明 C语言
    Java环境搭建与配置
    栈的C语言实现
    【欧拉计划2】Even Fibonacci numbers
    单链表的表示和实现 数据结构
  • 原文地址:https://www.cnblogs.com/yingpu/p/9318856.html
Copyright © 2020-2023  润新知