上一页 1 ··· 11 12 13 14 15 16 17 18 19 ··· 43 下一页
摘要: JMM 就是 「Java内存模型」(java memory model)。因为在不同的硬件生产商和不同的操作系统下,内存的访问有一定的差异,所以会造成相同的代码运行在不同的系统上会出现各种问题。所以java内存模型(JMM)「屏蔽掉各种硬件和操作系统的内存访问差异,以实现让java程序在各种平台下都 阅读全文
posted @ 2023-03-31 00:18 BookerABC 阅读(51) 评论(0) 推荐(0)
摘要: 「1.保证内存可见性」 可见性是指线程之间的可见性,一个线程修改的状态对另一个线程是可见的。也就是一个线程修改的结果,另一个线程马上就能看到。 「2.禁止指令重排序」 cpu 是和缓存做交互的,但是由于 cpu 运行效率太高,所以会不等待当前命令返回结果从而继续执行下一个命令,就会有乱序执行的情况发 阅读全文
posted @ 2023-03-31 00:15 BookerABC 阅读(36) 评论(0) 推荐(0)
摘要: 上图是 set 家族整体的结构, set 继承于 Collection 接口,是一个「不允许出现重复元素,并且无序的集合」. HashSet 是「基于 HashMap 实现」的,底层「采用 HashMap 来保存元素」 元素的哈希值是通过元素的 hashcode 方法 来获取的, HashSet 首 阅读全文
posted @ 2023-03-31 00:13 BookerABC 阅读(21) 评论(0) 推荐(0)
摘要: 1.ArrayList 是实现了基于「数组」的,存储空间是连续的。LinkedList 基于「链表」的,存储空间是不连续的。(LinkedList 是双向链表) 2.对于「随机访问」 get 和 set ,ArrayList 觉得优于 LinkedList,因为 LinkedList 要移动指针。 阅读全文
posted @ 2023-03-31 00:11 BookerABC 阅读(17) 评论(0) 推荐(0)
摘要: java 是一门「开源的跨平台的面向对象的」计算机语言. 跨平台是因为 java 的 class 文件是运行在虚拟机上的,其实跨平台的,而「虚拟机是不同平台有不同版本」,所以说 java 是跨平台的. 面向对象有几个特点: 1.「封装」 两层含义:一层含义是把对象的属性和行为看成一个密不可分的整体, 阅读全文
posted @ 2023-03-31 00:09 BookerABC 阅读(157) 评论(0) 推荐(0)
摘要: JMM 就是 「Java内存模型」(java memory model)。因为在不同的硬件生产商和不同的操作系统下,内存的访问有一定的差异,所以会造成相同的代码运行在不同的系统上会出现各种问题。所以java内存模型(JMM)「屏蔽掉各种硬件和操作系统的内存访问差异,以实现让java程序在各种平台下都 阅读全文
posted @ 2023-03-31 00:07 BookerABC 阅读(248) 评论(0) 推荐(0)
摘要: 在 Java1.6 之前的版本中,synchronized 属于重量级锁,效率低下,「锁是」 cpu 一个「总量级的资源」,每次获取锁都要和 cpu 申请,非常消耗性能。 在 「jdk1.6 之后」 Java 官方对从 JVM 层面对 synchronized 较大优化,所以现在的 synchron 阅读全文
posted @ 2023-03-31 00:05 BookerABC 阅读(42) 评论(0) 推荐(0)
摘要: ReentrantLock 意为「可重入锁」,说起 ReentrantLock 就不得不说 AQS ,因为其底层就是「使用 AQS 去实现」的。 ReentrantLock有两种模式,一种是公平锁,一种是非公平锁。 公平模式下等待线程入队列后会严格按照队列顺序去执行 非公平模式下等待线程入队列后有可 阅读全文
posted @ 2023-03-30 23:59 BookerABC 阅读(22) 评论(0) 推荐(0)
摘要: 1、「继承Thread类」,重写run()方法 public class Demo extends Thread{ //重写父类Thread的run() public void run() { } public static void main(String[] args) { Demo d1 =  阅读全文
posted @ 2023-03-30 23:57 BookerABC 阅读(15) 评论(0) 推荐(0)
摘要: 判断线程池中的线程数「是否大于设置的核心线程数」 如果「没有满」,则「放入队列」,等待线程空闲时执行任务 如果队列已经「满了」,则判断「是否达到了线程池设置的最大线程数」 如果「没有达到」,就「创建新线程」来执行任务 如果已经「达到了」最大线程数,则「执行指定的拒绝策略」 如果「小于」,就「创建」一 阅读全文
posted @ 2023-03-30 23:53 BookerABC 阅读(69) 评论(0) 推荐(0)
上一页 1 ··· 11 12 13 14 15 16 17 18 19 ··· 43 下一页