- 博客(9)
- 收藏
- 关注
原创 ScheduledThreadPoolExecutor
ScheduledThreadPoolExecutor之所以要自己实现阻塞的工作队列,是因为 ScheduledThreadPoolExecutor要求的工作队列有些特殊。DelayedWorkQueue是一个基于堆的数据结构,类似于DelayQueue和 PriorityQueue。
2025-04-03 09:00:00
795
原创 Java字节码文件详解
到这里,我们终于完成了一个简单的字节码解析。下面我们来对 Class 结构总结一下。先是魔数解析magic主版本号次版本号访问标志位常量池的解析从字节码中获取当前类从字节码中获取父类从字节码中获取接口属性获取方法提取编译器植入attribute当前字节码的源文件名。
2025-03-29 11:00:00
1077
原创 FastThreadLocal分析
上一篇文章分析了ThreadLocal,这篇文章主要分析Netty中FastThreadLocal。 在研究FastThreadLocal源码之前,依然是看一个例子。 从这个例子中,依然关注4个方法,FastThreadLocal()的构造方法,set()方法,get()方法, remove()方法,removeAll()方法。 先来看FastThreadLocal的构造函数。 这里引用了InternalThreadLocalMap的nextVariableIndex()方法,接下来看
2025-03-18 10:30:00
958
原创 ThreadLocal源码解析
有人说ThreadLocal性能真心差,但我觉得ThreadLocal的设计还是有很多值得学习的地方,也为我们考虑了很多,ThreadLocal性能真心差吗?不好说,如果项目中都是使用全局static变量来使用ThreadLocal,则不可能存在hash冲突,性能无与伦比,当大量在方法内部使用ThreadLocal时,这种情况可能就会出现hash冲突,但每次在set,get()元素的过程中,都会存在重置ThreadLocal的位置可能,在设置和查找过程中,性能真的那么差吗?
2025-03-16 19:33:50
910
原创 (Reactor模式 )反应器模式
什么是反应器模式呢?反应器模式由Reactor 反应器线程,Handlers 处理器两大角色组成。Reactor 反应器线程的职责,负责响应IO事件,并且分发到Handlers 处理器。Handlers 处理器的职责,非阻塞的执行行业业务处理逻辑。什么是间线程版本的Reactor 反应器模式呢?最简单的说,Reactor 反应器Handlers 处于一个线程执行,它是最简单的反应器模式 , 如下图所示。基于Java NIO ,如何实现简单的单线程版本的反应器模式呢?
2025-03-12 11:00:00
1897
原创 Java NIO 通信基础详解
在1.4 版本之前,Java IO 类库是阻塞IO,从1.4版本开始,引进了新的异步IO库,被称为Java New IO类库,简称为Java NIO ,New IO 类库的目标,就是要让Java 支持非阻塞IO ,基于这个原因,更多的人喜欢称Java NIO为非阻塞IO(Non Block IO) ,称为老的 阻塞式 Java IO 为 OIO或者是BIO , 总体来说,NIO 弥补了原来面向流的OIO 同步阻塞的不足,它的标准Java 代码提供了调整,面向缓冲区IO。
2025-03-10 11:45:00
1029
原创 详解四种主要的IO模型+io多路复用
有人内存缓冲区,上层应用使用了read系统调用时, 仅仅把数据从内核缓冲区复制到上层应用的缓冲区(进程缓冲区) ,上层应用使用write系统调用时,仅仅把数据从进程缓冲区复制到内核缓冲区,底层操作会对内核缓冲区进行监控,等待缓冲区达到一定数据的时候,再进行IO设备的中断处理,集中执行物理设备的实际IO 操作,这种机制提升了系统的性能,至于什么时候中断,读中断,写中断,由操作系统内核来决定,用户程序则不关心。为什么设置那么多的缓冲区,为什么要那么麻烦呢?
2025-03-09 10:41:13
1405
原创 深入理解并发编程工具CountDownLatch,CycliBarrier,Semaphore
我认为独占模式和共享模式的最大区别是在共享模式下acquireShared()获取锁成功后会唤醒下一个排队的线程,而独占模式下acquire()获取锁成功后不会获取下一个资源。在后续的CountDownLatch,Semaphore中可以很好的体现。
2025-03-07 10:45:00
656
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅