随笔分类 -  Java / Java SE

摘要:CountDownLatch的介绍 CountDownLatch是JUC中的一个同步工具类,它可以帮助我们实现线程之间的同步和协作。它的核心思想是通过计数器来控制线程的执行顺序。当计数器的值降为0时,所有等待的线程都会被唤醒,然后开始执行下一步操作。 一、实现原理 1. Sync类 CountDow 阅读全文
posted @ 2024-11-30 22:09 欢乐豆123 阅读(117) 评论(0) 推荐(0) 编辑
摘要:SPI机制在JDK/Spring/SpringBoot/Dubbo的区别? 概要 SPI (Service Provider Interface) 是一种服务发现机制,它允许第三方提供者为核心库或主框架提供实现或扩展。这种设计允许核心库/框架在不修改自身代码的情况下,通过第三方实现来增强功能。 一、 阅读全文
posted @ 2024-11-28 15:32 欢乐豆123 阅读(87) 评论(0) 推荐(0) 编辑
摘要:CyclicBarrier的介绍 概要 CyclicBarrier(循环栅栏/循环屏障)是JUC并发包中的一个同步工具类,它允许一组线程在执行过程中互相等待,直到所有线程都达到某个公共屏障点(barrier point),然后这些线程再一起继续执行。并且 CyclicBarrier 功能可重复使用。 阅读全文
posted @ 2024-11-26 21:06 欢乐豆123 阅读(53) 评论(0) 推荐(0) 编辑
摘要:Java死锁检测以及解决办法 一、死锁概念 1. 什么是死锁? 两个或者多个线程互相持有对方所需要的资源, 都在等待对方执行完毕才能继续往下执行的时候,就称为发生了死锁。结果就是两个线程或多个线程都陷入了无限的等待中。由于线程被无限期地阻塞,因此程序不可能正常终止。 一般是有多个锁对象的情况下并且获 阅读全文
posted @ 2024-11-10 15:49 欢乐豆123 阅读(474) 评论(0) 推荐(0) 编辑
摘要:线程池创建方式 一、方式一:通过ThreadPoolExecutor构造函数来创建(推荐) 方式二:通过 Executor 框架的工具类 Executors 来创建。 Executors工具类提供的创建线程池的方法如下图所示: 可以看出,通过Executors工具类可以创建多种类型的线程池,包括: 阅读全文
posted @ 2024-11-09 15:55 欢乐豆123 阅读(70) 评论(0) 推荐(0) 编辑
摘要:JVM指针压缩实现原理 概要 Java 中的指针压缩(Pointer Compression)是一个与内存管理相关的优化技术,主要应用于 JVM 的对象引用(即指针)的存储方式。指针压缩的目标是减少对象引用占用的内存空间,从而提高内存利用效率,特别是在 64 位系统上。 一、对象的内存布局 在了解指 阅读全文
posted @ 2024-11-06 21:02 欢乐豆123 阅读(83) 评论(0) 推荐(0) 编辑
摘要:Java阻塞队列 一、阻塞队列 1. 为什么要用阻塞队列? 在多线程领域,所谓阻塞,是指在某些情况下会挂起线程(即阻塞),一旦条件满足,被挂起的线程又会自动被唤醒。 使用阻塞队列能够简化多线程编程,是实现生产者-消费者模型等常见并发模式的重要工具。它能够有效地衔接生产者和消费者之间的速度差异,提供一 阅读全文
posted @ 2024-11-03 16:57 欢乐豆123 阅读(102) 评论(0) 推荐(0) 编辑
摘要:ThreadLocal的使用以及原理 概要 ThreadLocal 是 java 提供的一个方便对象在本线程内不同方法中进行传递和获取的类。用它定义的变量,仅在本线程中可见和维护,不受其他线程的影响,与其他线程相互隔离。 一、ThreadLocal能解决什么问题? 当涉及一个对象需要在很多不同方法之 阅读全文
posted @ 2024-11-01 17:31 欢乐豆123 阅读(410) 评论(0) 推荐(0) 编辑
摘要:String、StringBuffer和StringBuilder的区别 下面从可变性、是否线程安全等方面来对String、StringBuffer、StringBuilder进行比较。 一、可变性 1. String String 类中使用 final 关键字修饰字符数组来保存字符串。 publi 阅读全文
posted @ 2024-10-31 18:34 欢乐豆123 阅读(16) 评论(0) 推荐(0) 编辑
摘要:JVM的垃圾收集器 概要 垃圾收集算法就像是 Java 中的接口一样,而垃圾收集器是接口的具体实现。所以,不同的厂商,不同版本的虚拟机实现的方式都有所不同。甚至是很大的差别。 首先,了解下 HotSpot虚拟机中 9款垃圾回收器的发布时间及其对应的 JDK版本,如下图: 接着,了解下 CMS和G1这 阅读全文
posted @ 2024-10-30 12:02 欢乐豆123 阅读(33) 评论(0) 推荐(0) 编辑
摘要:Java中线程安全的数据结构 Java 提供了多种线程安全的工具类,主要可以分为以下几类: 一、Java Collections Framework 中的线程安全集合 1. Vector Vector是一个动态数组,支持同步操作,线程安全。使用 synchronized 来保证线程安全,效率非常低下 阅读全文
posted @ 2024-10-28 15:25 欢乐豆123 阅读(116) 评论(0) 推荐(0) 编辑
摘要:AQS实现原理 概要 在并发编程中,锁是一种常用的保证线程安全的方法。Java 中常用的锁主要有两类,一种是 Synchronized 修饰的锁,被称为 Java 内置锁或监视器锁。另一种就是在 JDK1.5版本之后的juc(java.util.concurrent) 包中的各类同步器。这些同步器都 阅读全文
posted @ 2024-10-23 22:17 欢乐豆123 阅读(31) 评论(0) 推荐(0) 编辑
摘要:自定义线程池 概要 我们知道线程是一个重量级的资源,创建、启动以及销毁线程都是比较耗费系统资源的。因此对线程的重复利用一种是非常好的程序设计习惯,加之系统中可创建的线程数量是有限的,线程数量和系统性能是一种抛物线的关系,也就是说当线程数量达到某个数值的时侯,性能反倒会降低很多,因此对线程的管理,尤其 阅读全文
posted @ 2024-08-05 11:40 欢乐豆123 阅读(58) 评论(0) 推荐(0) 编辑
摘要:CompletableFuture多线程并发处理 概要 一个接口可能需要调用 N 个其他服务的接口,这在项目开发中还是挺常见的。 举个例子:用户请求获取订单信息,可能需要调用用户信息、商品详情、物流信息、商品推荐等接口,如果是串行(按顺序依次执行每个任务)执行的话,接口的响应速度会非常慢。考虑到这些 阅读全文
posted @ 2024-06-21 09:07 欢乐豆123 阅读(840) 评论(0) 推荐(0) 编辑
摘要:Spring- FactoryBean使用/原理 概要 一般情况下,Spring通过反射机制利用的class属性指定实现类实例化Bean。在某些情况下,实例化Bean过程比较复杂,若按照传统的方式,则需要提供大量的配置信息,不够灵活,这时采用编码的方式能得到一个简单的方案。 Spring为此提供了一 阅读全文
posted @ 2024-06-19 12:00 欢乐豆123 阅读(141) 评论(0) 推荐(0) 编辑
摘要:Java开发Spring常见注解 前言 Spring注解方式减少了配置文件内容,更加便于管理,并且使用注解可以大大提高了开发效率。 下面按照分类讲解Spring中常用的一些注解。 一、声明bean的注解 1. @Component 一个通用的注解,用于标识任何 Spring 组件。标注Spring管 阅读全文
posted @ 2024-05-21 09:50 欢乐豆123 阅读(189) 评论(0) 推荐(0) 编辑
摘要:volatile关键字 概要 volatile修饰符并不是Java语言的首创,早在C和C++当中就已经存在。为了理解volatile关键字的作用和原理,需要先了解一些相关知识。请先参考这一篇文章《什么是Java内存模型(JMM)?》 我们知道,并发编程时,线程安全涉及三个特性:原子性、可见性、有序性 阅读全文
posted @ 2024-05-07 23:11 欢乐豆123 阅读(80) 评论(0) 推荐(0) 编辑
摘要:java线程池 一、线程池的7个核心参数 1. corePoolSize 核心线程数 corePoolSize 是线程池中保持活动状态的最小线程数。 即使线程是空闲的,它们也会一直保持在池中。 当有新任务提交时,线程池会优先创建核心线程来处理任务。 2. maximumPoolSize 最大线程数 阅读全文
posted @ 2024-04-24 10:15 欢乐豆123 阅读(32) 评论(0) 推荐(0) 编辑
摘要:ConcurrentHashMap的介绍 概要 在前面的文章《散列表》中,我们对HashMap进行了介绍。但是,在并发环境下,HashMap 存在线程安全问题,可通过 HashTable 或者 Collections.synchronizedMap 解决,但它们会对整个集合加锁,影响性能。为了兼顾线 阅读全文
posted @ 2024-03-07 17:23 欢乐豆123 阅读(48) 评论(0) 推荐(0) 编辑
摘要:java字节码指令 概要 众所周知,Java 字节码是跨平台的,因此 Java 才能一次编译,处处运行。 关于JVM和字节码: 1. JVM: JVM(Java Virtual Machine,Java虚拟机)是Java程序运行的虚拟计算机。它是Java平台的一部分,负责解释和执行Java字节码,并 阅读全文
posted @ 2024-02-03 11:55 欢乐豆123 阅读(57) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示