![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java原理篇
文章平均质量分 88
java探索者
Java探索者
展开
-
java原理篇之GC
1、垃圾收集器回收种类GC算法(引用计数/复制/标清/标整)是内存回收的方法论,垃圾收集器就是算法落地实现。因为目前为止还没有完美的收集器出现,更加没有万能的收集器,只是针对具体应用最合适的收集器,进行分代收集4种主要垃圾收集器SerialParallelCMSG12、串行并行并发G1四大垃圾回收方式串行垃级回收器(Serial) -它为单线程环境设计且只使用一个线程进行垃圾收集,会暂停所有的用户线程,只有当垃圾回收完成时,才会重新唤醒主线程继续执行。所以不适合服务器环境。原创 2021-08-11 15:07:17 · 121 阅读 · 0 评论 -
java原理篇之JVM
1、JVM体系结构概览java gc 主要回收的是 方法区 和 堆中的内容2、常见的垃圾回收算法1.引用计数2.复制Java堆从GC的角度还可以细分为: 新生代(Eden 区、From Survivor 区和To Survivor 区)和老年代。MinorGC的过程(复制->清空->互换):a. Eden、SurvivorFrom复制到SurvivorTo,年龄+1 首先,当Eden区满的时候会触发第一次GC,把还活着的对象拷贝到SurvivorFrom区,当Ede原创 2021-07-22 14:34:11 · 278 阅读 · 0 评论 -
java原理篇之死锁编码及定位分析
概念死锁是指两个或多个以上的进程在执行过程中,因争夺资源而造成一种互相等待的现象,若无外力干涉那他们都将无法推进下去。如果资源充足,进程的资源请求都能够得到满足,死锁出现的可能性就很低,否则就会因争夺有限的资源而陷入死锁。产生死锁的原因系统资源不足进程运行推进的顺序不对资源分配不当死锁产生的四个必要条件互斥解决方法:把互斥的共享资源封装成可同时访问占有且等待解决方法:进程请求资源时,要求它不占有任何其它资源,也就是它必须一次性申请到所有的资源,这种方式会导致资源效率原创 2021-07-21 11:33:17 · 81 阅读 · 0 评论 -
java原理篇之线程池
前言获取多线程的方法,我们都知道有三种,还有一种是实现Callable接口实现Runnable接口实现Callable接口实例化Thread类使用线程池获取1、线程池使用及优势线程池做的工作主要是控制运行的线程的数量,处理过程中将任务放入队列,然后在线程创建后启动这些任务,如果线程数量超过了最大数量超出数量的线程排队等候,等其它线程执行完毕,再从队列中取出任务来执行。它的主要特点为:线程复用,控制最大并发数,管理线程。优点:1.降低资源消耗。通过重复利用己创建的线程降低线程创建和销毁原创 2021-07-16 13:53:23 · 244 阅读 · 0 评论 -
java原理篇之阻塞队列
文章目录1.阻塞队列接口结构和实现类2.阻塞队列api之抛出异常组3.阻塞队列api之返回布尔值组4.阻塞队列api之阻塞和超时控制5.阻塞队列之同步SynchronousQueue队列1.阻塞队列接口结构和实现类概念队列:队列就可以想成是一个数组,从一头进入,一头出去,排队买饭阻塞队列BlockingQueue 阻塞队列,排队拥堵,首先它是一个队列,而一个阻塞队列在数据结构中所起的作用大致如下图所示:线程1往阻塞队列中添加元素,而线程2从阻塞队列中移除元素当阻塞队列是空时,从队列中获取元素原创 2021-07-12 15:27:53 · 309 阅读 · 0 评论 -
java原理篇之CountDownLatch、CyclicBarrier、Semaphore
文章目录1.CountDownLatch1.CountDownLatch概念让一线程阻塞直到另一些线程完成一系列操作才被唤醒。CountDownLatch主要有两个方法(await(),countDown())。当一个或多个线程调用await()时,调用线程会被阻塞。其它线程调用countDown()会将计数器减1(调用countDown方法的线程不会阻塞),当计数器的值变为零时,因调用await方法被阻塞的线程会被唤醒,继续执行。场景假设一个自习室里有7个人,其中有一个是班长,班长的主要职责原创 2021-07-09 17:31:15 · 152 阅读 · 0 评论 -
java原理篇之java锁
文章目录1.Java锁之公平锁和非公平锁2.java锁之可重入锁和递归锁理论知识3. java锁之可重入锁和递归锁代码验证1.Java锁之公平锁和非公平锁概念公平锁:是指多个线程按照申请锁的顺序来获取锁,类似于排队买饭,先来后到,先来先服务,就是公平的,也就是队列非公平锁:是指多个线程获取锁的顺序,并不是按照申请锁的顺序,有可能申请的线程比先申请的线程优先获取锁,在高并发环境下,有可能造成优先级翻转,或者饥饿的线程(也就是某个线程一直得不到锁)如何创建并发包中ReentrantLock的创建可以原创 2021-07-09 11:03:14 · 116 阅读 · 0 评论 -
JAVA原理篇之集合类不安全
文章目录1.集合类不安全之并发修改异常2.集合类不安全之写时复制1.集合类不安全之并发修改异常我们知道arrayList是线程不安全的,请编写一个不安全的案例以及给出解决方案import java.util.ArrayList;import java.util.Collections;import java.util.List;import java.util.UUID;import java.util.Vector;public class ArrayListNotSafeDemo {原创 2021-07-08 14:25:52 · 180 阅读 · 0 评论 -
JAVA原理篇之CAS篇
1.CAS是什么概念CAS的全称是Compare-And-Swap,即比较并替换,它是CPU并发原语它的功能是判断内存某个位置的值是否为预期值,如果是则更改为新的值,这个过程是原子的CAS并发原语体现在Java语言中就是sun.misc.Unsafe类的各个方法。调用UnSafe类中的CAS方法,JVM会帮我们实现出CAS汇编指令,这是一种完全依赖于硬件的功能,通过它实现了原子操作,再次强调,由于CAS是一种系统原语,原语属于操作系统用于范畴,是由若干条指令组成,用于完成某个功能的一个过程,并且原语原创 2021-07-07 10:32:48 · 243 阅读 · 0 评论