• JAVASE 第二十六天


    java的锁的问题:
        
    synchronized关键字:
        是同步锁,关键字
        加锁的时候,范围越小越好


    synchronized使用方式有三种:
        1、同步块
            key必须是一个对象
            synchronized(key) {
                // 同步代码
            }
        
        2、普通方法上面加
            如果某个方法都是有可能出现线程安全问题
            则建议加载方法上面
            该方法在充当锁的钥匙!!!
        3、静态方法上面
            


    synchronized同步锁在jdk7之前,默认调用系统锁(重量级锁)
        基于如上原因,jdk5,JUC包诞生,提供了一种全新的锁——Lock锁
        
    Lock锁:
        lock锁,是jdk5.0提供的锁、是一个可重入锁(ReentrantLock)
        可以充当公平锁、也可以是不公平锁
        一旦加锁,最后必须释放该锁,否则会出现死锁现象。
        将释放锁的代码一定要放在finally中!!!
    synchronized锁升级:
        
        synchronized:偏向锁(无锁),自旋锁(CAS),重量级锁


    乐观锁和悲观锁:
        synchronized和Lock都是悲观锁

    单例模式:
        饿汉式:
            直接创建对下,缺点:浪费内存

        
        懒汉式:
            在第一次调用时创建对象

        DCL(double check lock):双重检查锁
            需要禁止指令重排序!!

    高并发的三大要素:
        可见性:
        原子性:
        排序性:
            java代码,底层最后都会编译成汇编指令执行,汇编指令有可能会优化代码
            这种优化,有可能导致指令的执行顺序出现问题。

    volatile关键字:
        
        作用:
            1、被volatile修饰的变量,是线程可见的(可见性)
            2、被volatile修饰的变量,禁止指令重排序
       


    死锁(deadLock):
        两个线程之间,进行资源竞争时,彼此之间拿着对方需要的资源,
        但是因为线程的竞争性(请求保存),形成一种相互等待对方释放资源
        的现象,就叫做死锁。
        这种现象不好,尽量避免出现。


    死锁的必要条件:
        1、互斥
        2、请求保存
        3、环路等待
        4、不可剥夺性


    同步问题:
        协同步调。
        实现方案:
            可以使用lock来实现
            使用同步锁配合唤醒机制
        
            
    唤醒机制:
        
        notify()        // 唤醒已经处于wait状态的对象
        notifyAll()        // 唤醒所有处于wait状态的对象
        wait()            // 进入到等待状态


        同步锁配合唤醒机制实现同步

        1、必须有一个共有对象
        2、该共有对象就是同步锁的钥匙


    生产者和消费者模式:
        供需的平衡问题:
        

    网络编程:
        socket对象

  • 相关阅读:
    批量更新 AWS ECS Fargate 服务
    Redis篇---第十篇
    循环结构在反汇编中特征
    详解如何通过稀疏向量优化信息检索
    个人秋招面经——百度
    【web-攻击用户】(9.3.2)诱使用户执行操作--请求伪造——UI伪装
    Java开发工具之使用cmd安装MySQL数据库
    重磅出击,20张图带你彻底了解ReentrantLock加锁解锁的原理
    【运维 监控】Grafana + Prometheus,监控Linux
    [极客大挑战 2019]Http
  • 原文地址:https://blog.csdn.net/m0_57785152/article/details/126450263