• 如何学习java


    带着问题去学?

    为什么我们debug的时候代码会停在哪一个位置

    什么是多态?(这个在类的生命周期里面寻找答案)

    我们学习java

    就是 从代码到成为程序的过程

    所以这很明显就是我们的编译原理
    和os 打交道这很明白就是 操作系统
    和另一台机器打交道,那么就是计算机网络

    java 指令 8个

    从代码到程序
    就是从 代码到字节码(javap 命令可以看到),到机器码到01
    这样就串起来了

    java JMM

    这个可以对应到硬件的内存来学习,2013年摩尔定律失效

    先分大类,共享和隔离

    一个是共享,----堆和方法区
    其余的都是隔离的

    需要了解棧帧
    本地方法区
    程序计数器

    内存模型的学习,就是我们所写的类,方法,类变量,成员变量,循环,锁等的实际的映射

    以前我们学习面向对象只要到new 就ok 了,现在我们要会多种的new ,反射 ,clone 等,
    这里面要学习类的加载机制

    现在我们还要学习,对象这个东西,包括对象头啊,锁就在对象头里面
    这里面的锁标记为,然后决定了四种锁,这个就是在1.6以后

    因为摩尔定律的失效

    所以有了JUC ,当然这个因果链,还是比较长的
    JUC 只是 java一个并发的工具包,所以在util 里面
    ,这样也不用死记硬背

    多线程

    可见性,就是我们所说的viloatie 关键字 和sync 关键字
    原子
    顺序
    其中顺序,有指令重排和h -B 原则

    unsafe 这个里面封装了底层的CAS

    原子性指令

    锁的底层

    其实就是操作指令mutex

    JUC 里面

    有两个主要的包 原子 一些原子的并发工具
    一个是lock,这个就比较重要了,首先就是大名鼎鼎的AQS ,我们这些小卡拉米经常不碰,但是经常面试到的一个重点

    AQS

    三个重点,一个是通用的加锁和释放的方法,一个就是状态值,一个就是一个队列

    这和去火车站买票一样,排队是有序快速的一个方案,当然异步预定,也是

    学完了AQS 就是同级目录、里面的可重入锁了,它的基础实现有一个公平锁,一个非公平锁,就是主要是是否排队

    学完了可重入锁,下来就是一些同步工具

    学完同步工具 当然还有同步的集合

    还有线程池这个good thing

    两个重要的点,一个手机节约资源,一个是统一管理

    它的核心参数,主要是服务于主要的工作流程

    还有一个worker

    对于异步(这个其实是io密集型的一个重点)

    计算密集型,就用线程来解决

    Java 的中断机制

    有JDK 提供的,有线程提供的,有基于时间的

    锁的使用场景

    三、锁场景

    多线程锁是一种用于在多线程编程中保护共享资源的同步机制。以下是一些适合使用多线程锁的场景:

    数据库访问:多个线程同时访问数据库可能导致数据一致性问题,使用锁可以保证数据的完整性和正确性。

    文件读写:多个线程同时读写同一个文件可能会导致文件损坏或者数据丢失,使用锁可以保证文件的完整性和正确性。

    共享内存:多个线程访问同一块共享内存时,使用锁可以保证每个线程都能正确读取或写入共享内存的数据。

    队列操作:多个线程同时对队列进行操作可能会导致数据错乱或者数据丢失,使用锁可以保证队列的操作顺序和数据的正确性。

    网络通信:多个线程同时进行网络通信时,使用锁可以保证数据传输的完整性和正确性。

    需要注意的是,多线程锁并不是万能的,过多的锁使用会降低程序的性能。因此,在使用锁的时候应该注意权衡锁的粒度和性能的需求。

    序号 锁名称 应用
    1 乐观锁 CAS
    2 悲观锁 synchronized、vector、hashtable
    3 自旋锁 CAS
    4 可重入锁 synchronized、Reentrantlock、Lock
    5 读写锁 ReentrantReadWriteLock,CopyOnWriteArrayList、CopyOnWriteArraySet
    6 公平锁 Reentrantlock(true)
    7 非公平锁 synchronized、reentrantlock(false)
    8 共享锁 ReentrantReadWriteLock中读锁
    9 独占锁 synchronized、vector、hashtable、ReentrantReadWriteLock中写锁
    10 重量级锁 synchronized
    11 轻量级锁 锁优化技术
    12 偏向锁 锁优化技术
    13 分段锁 concurrentHashMap
    14 互斥锁 synchronized
    15 同步锁 synchronized
    16 死锁 相互请求对方的资源
    17 锁粗化 锁优化技术
    18 锁消除 锁优化技术

    21种锁

  • 相关阅读:
    前端算法之搜索插入位置
    HCIP第十八天笔记
    经验风险最小化与结构风险最小化:优化机器学习模型的两种方法
    APP如何设计应用的屏幕截图以提高下载量
    工厂如何实现智能制造?有哪些需要注意的?
    Vue3-初识Vue3、创建Vue3工程、vue3组合式API(setup、ref函数、reactive函数)、响应式原理、计算属性、监视属性
    Linux软件包管理— rpm包中文件提取
    你在MySQL中加了什么锁,导致死锁的?
    Java反射
    BurpSuit官方实验室之信息泄露
  • 原文地址:https://blog.csdn.net/GP0000968523/article/details/133127388