Java基础
文章平均质量分 84
Java基础
风的着点
这个作者很懒,什么都没留下…
展开
-
URL命名规范
Browser URL规范基本规范不允许出现没有意义的下 URL只能允许英文字母(az,全小写)、数字(09),英文连接符(-)https://展开的层级目录内容中不允许出现“丨”、下划线“_”、多斜杠字符“//”、“+”、“#”(除特殊情况比如开发人员使用#锚点定位)层次命名不要超过3个单词正确示例:https://www.example.com/first/second/third.html错误示例:https://www.example.com/first/second/原创 2022-01-18 17:14:55 · 9485 阅读 · 0 评论 -
锁状态及升级
JDK1.6之前的实现JDK1.6之前synchronized是一个重量级锁,效率很低(阻塞或唤醒一个Java线程需要操作系统切换CPU状态来完成,这种状态切换需要耗费处理器时间,如果同步代码块中内容过于简单,这种切换的时间可能比用户代码执行的时间还长)JDK1.6之后优化synchronized性能出现了偏向锁、轻量级锁;锁的状态会随着竞争情况进行升级,不能降级;但偏向锁可以被重置为无锁对象结构介绍[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gdfNcDr原创 2021-10-22 13:59:50 · 195 阅读 · 0 评论 -
Java守护线程
Java中有两类线程:User Thread(用户线程)、Daemon Thread(守护线程)只要当前JVM实例中尚存在任何一个非守护线程没有结束,守护线程就全部工作;只有当最后一个非守护线程结束时,守护线程随着JVM一起结束工作Daemon的作用是为其他线程的运行提供便利服务,守护线程最典型的应用就是GCUser和Daemon两者几乎没有区别,如果User Thread全部退出运行,只剩下Daemon Thread,那虚拟机也会退出(没有了被守护者User Thread,Daemo.原创 2021-10-14 22:17:50 · 478 阅读 · 0 评论 -
ThreadLocal
什么是ThreadLocal?称为线程本地变量,当使用ThreadLocal维护变量时,每个Thread拥有一份自己的变量副本,多个线程之间互不干扰,实现线程间的数据隔离ThreadLocal维护的变量在线程的生命周期内起作用ThreadLocal数据结构每个线程对应一个Thread对象,每个Thread对象中,都拥有一个ThreadLocal.ThreadLocalMap成员变量ThreadLocalMap类似于HashMap,维护的都是key-value键值对(HashMap维护的是数原创 2021-09-16 16:28:48 · 84 阅读 · 0 评论 -
强引用、软引用、弱引用、虚引用
从JDK1.2开始,Java把对象引用分为四种级别,由高到低分别为:强引用、软引用、弱引用和虚引用强引用(Strong Reference)// 强引用就是我们经常使用的引用Object obj = new Object();把一个对象赋给一个引用变量,这个引用变量就是一个强引用只要还有强引用指向一个对象,垃圾收集器就不会回收这个对象显示的设置obj=null或超出对象的生命周期,则此对象可以被回收(回收时机视收集策略决定)软引用(Soft Reference)实现:java.l.原创 2021-09-16 11:05:10 · 102 阅读 · 0 评论 -
Java编程思想(二)
数组// 多维数组中构成矩阵的每个向量都可以具有任意长度,也称为粗糙数组// 只有第一维必须需要指定长度(如果不指定其他维度长度,相当于仍然为一维数组,且所有元素都是null)// 多维数组从第二维开始都是对象引用,可以为nullRandom random = new Random(47);int[][][] ints = new int[random.nextInt(7)][][];// 元素为List<String>的数组List<String>[] ls;/原创 2021-09-14 16:50:10 · 141 阅读 · 0 评论 -
ReentrantLock(AQS)
AbstractQueuedSynchronizer简称AQS,是一种提供了原子式管理同步状态、阻塞和唤醒线程功能以及队列模型的简单框架以下代码基于Open JDK1.8.0_292以非公平锁示例ReentrantLockReentrantLock与Synchronized对比ReentrantLock与AQS的关联ReentrantLock支持公平锁和非公平锁ReentrantLock的底层由AQS实现(引子)非公平锁加锁流程(JDK1.8)// java.ut.原创 2021-09-13 14:55:52 · 228 阅读 · 0 评论 -
啥是CAS
CAS什么是CAS?compareAndSwap,比较交换,是一种无锁原子算法,映射到操作系统就是一条CPU的原子指令执行过程:CAS(V,E,N)当前实际值、当前期望值、修改后的值多个线程使用CAS操作一个变量时,最多只有一个会成功,其余均会失败失败的线程不会挂起,仅被告知失败,且允许再次尝试(自旋)使用无锁的方式完全没有锁竞争带来的线程间频繁调度的开销和阻塞,对死锁问题天生免疫。性能更好底层原理:硬件指令集(原子指令集)其他原子指令集:测试并设原创 2021-09-10 11:18:44 · 146 阅读 · 0 评论 -
Java编程思想(一)
this关键字成员变量与参数同名时,使用 this 指定为成员变量除构造器外,编译器禁止从其他任何地方使用 this 调用构造器使用this调用构造器:可以使用 this 调用一个构造器(不能调用两个)调用构造器必须位于起始处初始化顺序数组初始化:最后的一个逗号可以保留基本数据类型值会自动初始化为空值(数字:0,布尔:false)代码块:静态代码块:与成员静态变量完全相同 ==> 仅会在必要执行一次(类首次加载或静态方法被调用)非静态代码块:用来初始化每原创 2021-08-11 21:53:18 · 287 阅读 · 0 评论