- 博客(5)
- 收藏
- 关注
原创 RocketMQ功能解析
这个过程是在操作系统完成的,在Java代码层是无法直观看到的,我们可以通过看JDK源码,在JDK的nio包里,java.nio.HeapByteBuffer映射的就是一块JVM内存(会通过byte[]数组缓存数据),所有的读写都是通过直接操作byte[],这个是没有使用零拷贝的普通读写。上面cpu copy每次复制的都是存储的文件内容的copy,而mmap的copy只是保存文件的映射(文件的内存地址、文件大小),所以真实的数据也不需要在用户态进行留存,直接通过操作映射在内核态完成数据复制。
2024-05-04 01:30:26 1499
原创 ThreadLocal介绍以及源码分析
ThreadLocal是为了解决多线程并发访问的一种方案,它不像Synchronized等其他锁方式,使变量或者代码只能被一个线程访问,而ThreadLocal是为了每个线程提供属于自己线程的变量副本,每个线程读取变量副本都是相互独立的,从而达到线程隔离作用。
2024-04-24 18:25:33 1714
原创 AQS介绍和源码解析
AQS(AbstractQueuedSynchronizer),是Java中并发包的核心组件之一,它提供了一种队列同步器的实现方式。我们并发包中经常使用的,例如ReentrantLock、CountDownLatch、Semaphore等都是通过AQS来构建实现的。它的内部是使用一个FIFO等待队列来管理线程的获取和释放锁的顺序,同时使用一个volatile变量来标识锁的状态。AQS我们可以通过继承来进行扩展,但是我们要记得实现tryAcquire和tryRelease等方法来控制锁的获取和释放。
2024-04-23 15:42:23 1760 1
原创 线程池介绍以及ThreadPoolExecutor源码解析
文章目录前言1、线程池是什么?2、线程池的基本信息介绍2.1 核心参数2.2 线程池状态:3、ThreadPoolExecutor3.1 使用线程池的简单demo3.3 源码解析3.3.1 excute方法源码分析3.3.2 addWorker添加线程方法源码分析3.3.3 runWorker执行任务方法源码分析3.3.4 getTask获取任务方法源码分析3.3.5 processWorkerExit方法源码分析3.3.6 mainLock4、使用注意事项总结前言随着我们工作经验的提升,以及业务
2024-04-20 18:41:55 596
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人