知识点总结

标题3.3 在 java 中 wait 和 sleep 方法的不同?

最大的不同是在等待时 wait 会释放锁,而 sleep 一直持有锁。wait 通常被用于线程间交互,sleep 通常被用于暂停执行。

3.4 同步锁与死锁同步锁:

当多个线程同时访问同一个数据时,很容易出现问题。为了避免这种情况出现,我们要保证线程同步互斥,就是指并发执行的多个线程,在同一时间内只允许一个线程访问共享数据。 Java 中可以使用 synchronized 关键字来取得一个对象的同步锁。死锁:死锁就是多个线程同时被阻塞,它们中的一个或者全部都在等待某个资源被释放

.3.5 乐观锁和悲观锁是什么?

乐观锁:总是假设最好的情况,每次去拿数据的时候都认为别人不会修改,所以 不会上锁悲观锁:总是假设最坏的情况,每次去拿数据的时候都认为别人会修改,所以每 次在拿数据的时候都会上锁,这样别人想拿这个数据就会阻塞直到它拿到锁 (共享资源每次只给一个线程使用,其它线程阻塞,用完后再把资源转让给 其它线程)

3.6 线程池原理?

线程池做的工作主要是控制运行的线程的数量,处理过程中将任务放入队列,然后在线程创建后启动这些任务,如果线程数量超过了最大数量 超出数量的线程排队等候,等其它线程执行完毕,再从队列中取出任务来执行。他的主要特点为: 线程复用;控制最大并发数 ;管理线程 线程池的组成: :一般的线程池主要分为以下 4 个组成部分:1. 线程池管理器2. 工作线程3. 任务接口4. 任务队列

3.7 线程执行的顺序?

  1. 当线程数小于核心线程数时,会一直创建线程直到线程数等于核心线程数;2. 当线程数等于核心线程数时,新加入的任务会被放到任务队列等待执行;3. 当任务队列已满,又有新的任务时,会创建线程直到线程数量等于最大线程数;4. 当线程数等于最大线程数,且任务队列已满时,新加入任务会被拒绝。

3.8 线程池的核心参数有哪些?

1.corePoolSize (核心线程数)2.queueCapacity (任务队列容量)3.maxPoolSize (最大线程数)4.keepAliveTime (线程空闲时间)

4.1 JVM 内存管理

JVM 将内存划分为 6 个部分:PC 寄存器.虚拟机栈.堆.方法区.运行时常量池.本地方法栈PC 寄存器:用于记录当前线程运行时的位置java 虚拟机栈:在创建线程时创建的,用来存储栈帧java 堆:堆的主要作用就是存储对象方法区:方发区被各个线程共享,用于存储静态变量.运行时常量池等信息。本地方法栈 : 本地方法栈的主要作用就是支持 native 方法

4.2 GC 分代收集算法和分区收集算法区别?

  1. 分代收集算法 这种算法会根据对象存活周期的不同将内存划分为几块, 如 JVM 中的 新生代、老年代、永久代,根据各年代特点分别采用最适当的 GC 算法在新生代- - 复制算法:只需要付出少量存活对象的复制成本就可以完成收集在老年代- - 标记整理算法, 就必须采用“标记—清理”或“标 记—整理”算法来进行回收, 不必进行内存复制, 且直接腾出空闲内存. 2. 分区收集算法分区算法则将整个堆空间划分为连续的不同小区间, 每个小区间独立使用, 独立回收. 这样做的好处是可以控制一次回收多少个小区间 , 根据目标停顿时间, 每次合理地回收若干个小区间, 从而减少一次 GC 所产生的停顿。

2. 4.3 GC 垃圾收集器

  1. Java 堆内存被划分为新生代和年老代两部分,新生代主要使用复制和标记-清除垃圾回收算法; 年老代主要使用标记-整理垃圾回收算法,因此 java 虚拟中针对新生代和年老代分别提供了多种不同的垃圾收集器常见的垃圾回收器:Serial 垃圾收集器(单线程、复制算法),ParNew 垃圾收集器(Serial+多线程),Parallel Scavenge 收集器(多线程复制算法、高效)等最常用的是 G1(Garbage First):
  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值