摘要: 内存区域 专属线程的(生命周期与线程的创建周期相同): PCI:用于依次读取指令,实现代码的流程控制;用于记录当前线程执行的位置,从而实现上下文切换。 虚拟机栈:描述java方法执行的内存模型,每次方法调用的数据都是通过栈传递的。虚拟机栈由栈帧组成,栈帧拥有局部变量表、操作数栈、动态链接、方法出口信 阅读全文
posted @ 2022-01-10 12:41 黑白灰java 阅读(60) 评论(0) 推荐(0)
摘要: synchronize 可以确保被它修饰的代码块或方法在同一时刻只有一个线程执行,确保线程安全性。 修饰成员方法:对象锁 修饰静态方法:类锁 修饰代码块synchronize(this|a.class):对象锁或类锁 tips:构造方法是线程安全的,不可以使用synchronize关键字修饰(单例模 阅读全文
posted @ 2022-01-10 12:40 黑白灰java 阅读(159) 评论(0) 推荐(0)
摘要: java线程的生命周期:六种(NEW,RUNNABLE,WATIING,TIME_WAITING,BLOCKED,TERMINATED) 说一说进程有多少种状态,如何转换? 新建->就绪<->运行->阻塞or终止(阻塞到就绪,然后继续运行直到终止) 上下文切换的原理当线程从CPU占有状态退出时会发生 阅读全文
posted @ 2022-01-09 14:39 黑白灰java 阅读(84) 评论(0) 推荐(0)
摘要: HashMap的原理 底层是使用拉链法解决哈希冲突的哈希表,且冲突链表长度超过8会转为红黑树提高检索效率 为什么超过8转为红黑树呢? 链表查询时间复杂度为n,红黑树查询时间复杂度为logn 红黑树的结点要维持左右子树和颜色信息,所占空间是是链表结点的两倍。将阈值设置为8体现了空间与时间的平衡思想。 阅读全文
posted @ 2022-01-09 14:35 黑白灰java 阅读(43) 评论(0) 推荐(0)
摘要: 单例模式 静态私有的实例 私有构造函数 公开访问方法 懒汉式加载方式: 在调用getinstance判断为null进行第一次初始化,通过加锁实现多线程安全(双重检验锁机制,两次判断Null,加类锁,上volatile修饰对象防止指令重排) 饿汉式加载方式: 不需要加锁即可线程安全,但类加载时就初始化 阅读全文
posted @ 2022-01-08 20:02 黑白灰java 阅读(37) 评论(0) 推荐(0)
摘要: 泛型 泛型的本质是为了参数化类型。在泛型使用过程中,操作的数据类型被指定为一个参数,在调用的时候指明具体类型,适用于代码复用。常用的方式分为泛型类、泛型接口、泛型方法。 泛型上下限:为传入的泛型类型实参进行上下边界的限制 <? extends Number> <? super string> 类型擦 阅读全文
posted @ 2022-01-08 13:11 黑白灰java 阅读(148) 评论(0) 推荐(0)
摘要: java基本操作与语法,考察很多很细 面向对象的三大特征——封装,继承,多态 封装是将对象的属性隐藏在对象内部不允许外部对象直接访问,而是提供方法来操作属性 继承,子类拥有父类的所有属性和方法,可以对父类进行拓展 多态:分为运行时多态(父类引用指向子类对象),编译时多态(重载) UML类之间的关系: 阅读全文
posted @ 2022-01-04 20:53 黑白灰java 阅读(120) 评论(0) 推荐(0)