
Java进阶
多线程,JVM
iqqcode
加油,未来可期!
展开
-
CopyOnWrite容器解析,通过COW思想聊聊CopyOnWriteArrayList
CopyOnWrite容器解析,通过COW思想聊聊CopyOnWriteArrayList。写入时复制(CopyOnWrite,简称COW)思想是计算机程序设计领域中的一种优化策略。其核心思想是,如果有多个调用者(Callers)同时要求相同的资源......原创 2020-12-08 10:34:11 · 505 阅读 · 0 评论 -
【探究JVM十二】GC日志分析
【探究JVM十二】GC日志分析。日志的参数及日志分析工具介绍......原创 2020-08-08 15:56:29 · 218 阅读 · 0 评论 -
【探究JVM十一】一文带你回顾JVM垃圾回收器的前世今生(开局一段话,再送一张图!详解JVM七大垃圾回收器)
(开局一段话,再送一张图!详解JVM七大垃圾回收器)一文带你回顾JVM垃圾回收器的前世今生。GC分类与性能指标,垃圾回收器的介绍, G1垃圾回收器, CMS-低延时,Serial-串型回收,ParNew-并行回收,Parallel-吞吐量优先原创 2020-08-08 12:02:01 · 355 阅读 · 0 评论 -
【探究JVM十】JVM垃圾回收的相关概念
什么是System.gc()?内存溢出和内存泄漏的区别是什么?强引用、软引用、虚引用、弱引用分别是什么?区别有哪些?本文带你了解!原创 2020-08-08 10:34:45 · 338 阅读 · 0 评论 -
【探究JVM九】深入理解JVM垃圾回收的8种算法
8种垃圾回收的算法有哪些?关于垃圾收集有三个经典问题:哪些内存需要回收?什么时候回收?如何回收?标记阶段的算法有什么?清除阶段的算法以及复合算法的应用。本文带你深入了解.......原创 2020-07-25 10:00:48 · 1386 阅读 · 3 评论 -
【探究JVM八】Java的核心动力——执行引擎
Java的核心动力——执行引擎。Java跨平台的原因就是因为JVM的执行引擎,执行引擎怎么处理Java程序的编译与执行的?它又有那些结构呢?本文带你探究!原创 2020-07-19 21:56:24 · 673 阅读 · 0 评论 -
【探究JVM七】带你逛逛JVM方法区 堆和方法区是怎样的关系,JDK7和JDK8又有什么差异,方法区内部的结构又是怎样的?
堆和方法区是怎样的关系,JDK7和JDK8又有什么差异,方法区内部的结构又是怎样的?常量池和运行时常量池有什么区别?带你逛逛JVM方法区原创 2020-07-17 16:29:24 · 1539 阅读 · 2 评论 -
【探究JVM六】这一次,彻底把JVM堆空间的结构搞懂!对象内存分配策略,堆空间的可视化探究,新生代老年代GC的触发机制一文看懂!
这一次,彻底把JVM堆空间的结构搞懂!本文介绍堆空间上对象内存分配策略,堆空间的可视化探究,新生代老年代GC的触发机制一看便懂!原创 2020-07-17 16:19:05 · 1588 阅读 · 3 评论 -
【探究JVM五】运行时数据区之——本地方法栈
运行时数据区之——本地方法栈,为什么要使用本地方法?本地方法栈的介绍!原创 2020-07-15 22:33:33 · 271 阅读 · 0 评论 -
【探究JVM四】Java方法执行的线程内存模型——虚拟机栈 字节码指令追踪,万字长文深入探究内部结构
JVM运行时数据区重要结构,Java方法执行的线程内存模型——虚拟机栈 。本文通过字节码指令追踪,万字长文带你深入探究虚拟机栈的内部结构!原创 2020-07-15 22:26:52 · 481 阅读 · 3 评论 -
【探究JVM三】运行时数据区的指示器——程序计数器
程序计数器(PC计数器)是JVM运行时数据区的一块很小的区域,它负责通过改变代码的行号指示来供执行引擎选取下一条需要执行的字节码指令......原创 2020-07-15 21:55:43 · 551 阅读 · 2 评论 -
【探究JVM二】运行时数据区与对象的实例化
运行时数据区与对象的实例化原创 2020-08-21 00:07:38 · 280 阅读 · 0 评论 -
【探究JVM一】JVM的入口——类加载器子系统
首先,这是这是关于JVM的系列文章【秋招面试之JVM系列文章,消除JVM面试烦恼】,这是你我秋招路上的好伴侣✔。我大概肝了一个月左右(不是全天哈),看书、网课、看文章等总结的知识点,图和文字纯手工制作。自己到目前还未投递简历,打铁还得自身硬,文章算是自己总结复习JVM的过程,文章偏向于秋招求职者的角度来讲解知识点,一篇长文来说明一个JVM相关的知识点。文章整体分为三大块:类加载子系统,运行时数据区,执行引擎原创 2020-07-13 16:57:45 · 663 阅读 · 2 评论 -
JVM(二)垃圾回收器与内存分配策略
文章目录1. 垃圾回收策略2. 引用的扩充3. 对象的自我拯救4. 方法区的回收5. 垃圾回收算法(堆上)I. 标记清除算法II. 复制算法(新生代回收算法)III. 标记-整理算法(老年代回收算法)IV. 分代收集策略(JavaGC)上一节内容回顾 :JVM(一)内存区域与内存溢出异常1. 垃圾回收策略回收 针对的是线程共享内存(堆,方法区)判断对象是否存活?a. 引用计数法(Py...原创 2019-09-18 21:00:00 · 501 阅读 · 0 评论 -
JVM(一)内存区域与内存溢出异常
文章目录1. JVM简介2. JVM内存区域划分线程私有内存I. 程序计数器 :II. 虚拟机栈 :III. 本地方法栈线程共享内存I. Java堆II. 方法区III. 运行时常量池1. JVM简介虚拟机简介 :JVM(Java Virtual Machine的简称,意为Java虚拟机)虚拟机 :指通过软件模拟的具有完整硬件功能的、运行在一个完全隔离的环境中的完整计算机系统常见的虚拟机 ...原创 2019-09-18 20:32:13 · 519 阅读 · 0 评论 -
【JUC辅助工具类】CountDownLatch - CyclicBarrier - Semaphore
【JUC辅助工具类】CountDownLatch - CyclicBarrier - Semaphore原创 2020-10-03 15:15:36 · 513 阅读 · 0 评论 -
【AQS面试篇】了解ReentrantLock吗?讲讲其底层实现
【AQS面试篇】了解ReentrantLock吗?讲讲其底层实现ReentrantLock和AQS的关系AQS原理详解原创 2020-10-02 17:28:27 · 1119 阅读 · 0 评论 -
CAS与volatile组合拳 无锁怎么保证线程安全的
CAS与volatile组合拳 无锁怎么保证线程安全的原创 2020-08-25 18:09:57 · 1120 阅读 · 0 评论 -
手撕生产者消费者模式【三种实现】
线程间的通信,手撕生产者消费者模式【三种实现】原创 2020-08-21 22:40:43 · 784 阅读 · 0 评论 -
CAS自旋
CAS自旋,与volatile打出组合拳实现无锁线程安全.....原创 2020-07-19 22:24:29 · 3980 阅读 · 2 评论 -
知道这些,面试时volatile就稳了
不慌,面对volatile关键字,我们能赢????!在Java相关的岗位面试中,很多面试官都喜欢考察面试者对Java并发的了解程度,而以volatile关键字作为一个小的切入点,往往可以一问到底,把Java内存模型(JMM),Java并发编程的一些特性都牵扯出来,深入地话还可以考察JVM底层实现以及操作系统的相关知识!原创 2020-06-13 19:54:21 · 2960 阅读 · 12 评论 -
用volatile的视角,来打开JMM内存模型
本文以volatile关键字的视角,来打开JMM内存模型。通过代码的详解及底层原理的分析,让你搞懂volatile,对JMM内存模型有更深入的了解。【本菜鸡还没投简历,准备好被今年20年秋招的毒打了????】Java相关的岗位面试中,很多面试官都喜欢考察面试者对Java并发的了解程度,而以volatile关键字作为一个小的切入点,往往可以一问到底,把Java内存模型(JMM),Java并发编程的一些特性都牵扯出来,深入地话还可以考察JVM底层实现以及操作系统的相关知识。原创 2020-06-13 19:44:15 · 1838 阅读 · 3 评论 -
Java线程池的四种用法与使用场景
文章目录Java线程池的四种用法与使用场景一、如下方式存在的问题二、使用线程池有什么优点三、线程池的四种使用方式1、newCachedThreadPool2、newFixedThreadPool3、newScheduledThreadPool4、newSingleThreadExecutor四、线程池的作用【转载自微信公众号 : 一个程序员的成长 】【原文链接】:Java线程池的四种用法与使...转载 2019-10-24 23:39:44 · 2156 阅读 · 0 评论 -
多线程十 JUC包下的常用工具类
JUC包下的常用工具类1. CountDownLatch-闭锁2. CyclicBarrier-循环栅栏3. Semaphore-信号量4. Exchanger-线程数据交换器这篇文章主要是关于 java.util.concurrent(JUC) 类包下的常用类JUC是JDK5才引入的并发类库. JUC中为了满足在并发编程中不同的需求,提供了几个工具类供我们使用,分别是 CountDown...原创 2019-08-15 17:42:12 · 845 阅读 · 0 评论 -
多线程九 线程池之Future接口
线程池之Future接口1. Future 和 FutureTask1. Future 和 FutureTaskFuture接口中的get()会阻塞当前线程直到取得Callable的返回值FutureTask : 可以保证在多线程场景下,任务只会被一个线程执行,其他线程不再执行此任务;在多线程并发下可以保证任务(传入的Callable或Runnable)只执行一次...原创 2019-08-15 13:09:58 · 614 阅读 · 0 评论 -
多线程八 线程池
文章目录1. 线程池2. 线程池核心接口3. 线程池工作原理4. java中常见的阻塞队列5. 创建线程池以及向线程池提交任务6. 合理配置线程池7. JDK 内置的四大线程池 Executor1. 线程池创建线程的方式继承 Thread实现 Runnable实现 Callable线程池(推荐使用线程池来创建线程)线程池概述:程序启动一个新的线程的成本是比较高的,因为它涉及到要...原创 2019-08-09 20:01:53 · 586 阅读 · 0 评论 -
多线程七 死锁及Lock锁体系
Lock体系1. Lock2. Lock体系使用Lock解决死锁问题3. Condition4. 到底使用 synchronized 还是 Lock?在Lock接口出现之前,java程序主要是靠synchronized关键字实现锁功能的,而JDK5之后,并发包中增加了lock接口,它提供了与synchronized一样的锁功能。虽然它失去了像synchronize隐式加锁解锁的便捷性,(Loc...原创 2019-08-05 16:44:17 · 448 阅读 · 2 评论 -
多线程六 线程间的通信
死锁及生产者消费者模型1. 死锁2. ThreadLocal3. Object类的 wait() 、noyify()wait():痴汉方法notify():notifyAll()4. 生产消费者模型1. 死锁死锁参生的条件(下列四个条件必须同时满足):互斥共享资源只能同时被一个线程占用占有且等待拿到了一个锁,不释放的同时又去申请另一个锁不可抢占线程不能强行抢占其他线...原创 2019-07-28 16:03:46 · 1602 阅读 · 1 评论 -
多线程五 synchronized实现原理及优化
synchronized实现原理及优化1. synchronized实现原理1.1 对象锁(monitor)机制1.2 monitorenter,monitorexit1.3 可重入锁:2. JDK1.6 之后对synchronized的优化CAS(自旋)偏向锁:轻量级锁重量级锁锁粗化锁消除1. synchronized实现原理sychronized的使用场景:1.1 对象锁(monito...原创 2019-07-27 12:45:32 · 634 阅读 · 1 评论 -
多线程三 线程的停止及守护线程
线程停止一、设置标志位(无法处理线程阻塞时的问题)二、调用Thread类提供的stop方法强行关闭线程三、调用Thread类提供的 interrupt()四、线程的优先级五、守护线程(DaemonThread)多线程中有三种方式可以停止线程:设置标记位,可以是线程正常退出使用stop方法强制使线程退出,但是该方法不太安全所以已经被废弃了使用Thread类中的一个interrupt() 可...原创 2019-07-26 17:05:26 · 707 阅读 · 0 评论 -
多线程四 synchronized关键字解决线程同步问题
线程的同步1. java中锁的实现1.1 使用 synchroinzed 的两种用法1.2 二者之间的区别2.synchronized对象锁多线程编程的三大问题:分工同步:线程间的通信互斥:多线程并发时,某一时刻只能有一个线程访问资源共享资源带来的并发问题(详细的分析点击文章)12306买票class Web123 implements Runnable { priva...原创 2019-07-26 00:01:16 · 582 阅读 · 0 评论 -
多线程并发问题 黄牛卖票和模拟龟兔赛跑问题分析
数据共享带来的并发问题分析,多线程实现龟兔赛跑......原创 2019-07-21 22:02:20 · 997 阅读 · 0 评论 -
多线程二 线程常用的方法
线程常用的操作方法一、常用线程操作方法1.线程休眠2.线程让步3.线程等待一、常用线程操作方法取得当前JVM中正在执行的线程对象:public static native Thread currentThread();线程命名:public Thread(Runnable target,Sting name)public final synchronized void setN...原创 2019-07-21 20:33:13 · 387 阅读 · 0 评论 -
多线程一 线程的创建
JavaSE中最核心的内容,多线程它来了。什么是进程?什么是线程?创建线程要执行哪些操作?有哪几种方式来创建线程?本文带你揭秘,欢迎学习多线程系列博文......原创 2019-07-21 18:26:23 · 830 阅读 · 0 评论