首页
AI Coding
NEW
沸点
课程
直播
活动
AI刷题
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
会员
登录
注册
JDK源码分析
程序员蛋蛋
创建于2021-08-16
订阅专栏
详解JDK源码,让你理解的透透彻彻
等 5 人订阅
共17篇文章
创建于2021-08-16
订阅专栏
默认顺序
默认顺序
最早发布
最新发布
玩转线程池
多线程的异步执行方式,虽然能够最大限度发挥多核计算机的计算能力,但是如果不加控制,反而会对系统造成负担。线程本身也要占用内存空间,大量的线程会占用内存资源并且可能会导致Out of Memory。即便
多态的理解
多态:事物运行过程中存在不同的状态 多态存在的条件:必须具有继承关系,子类要重写父类的方法,父类引用子类的对象 例如一个父类Animal ,
线程封闭之ThreadLocal和栈封闭
当访问共享数据时,通常是要使用同步。如果要避免使用同步,就是不提供共享数据。如果仅在单线程中访问数据,就不需要同步,这种技术就叫做线程封闭,它是实现线程安全最简单的方式之一。当某个对象封闭在一个线程当
Synchronized原理分析
Synchronized是基于JVM来实现的,通过基于JVM进入和退出Monitor对象来实现方法同步和代码块同步。方法同步和代码块同步的实现细节是不一样的,代码块同步是使用monitorenter和
Semaphore源码解析
Semaphore,信号量,它保存了一系列的许可(permits),每次调用acquire()都将消耗一个许可,每次调用release()都将归还一个许可。
CyclicBarrier源码解析
CyclicBarrier,回环栅栏,它会阻塞一组线程直到这些线程同时达到某个条件才继续执行。它与CountDownLatch很类似,但又不同,CountDownLatch需要调用countDown
CountDownLatch源码解析
读一些无用的书,做一些无用的事,花一些无用的时间,都是为了在一切已知之外,保留一个超越自己的机会,人生中一些很了不起的变化,就是来自这种时刻。
ReentrantLock源码解析(二) - - 条件锁
条件锁,是指在获取锁之后发现当前业务场景自己无法处理,而需要等待某个条件的出现才可以继续处理时使用的一种锁。
ReentrantLock源码解析(一) - - 公平锁、非公平锁
ReentrantLock叫做可重入锁,什么是可重入呢? 可重入就是说如果当前线程持有锁,当它还没释放锁,它再次进行获取锁是可以继续获取到的,而不用等待释放锁再获取到。可重入锁分为公平锁和非公平锁,
FutureTask源码解析
FutureTask是一个未来任务,可以获取返回结果,通过get方法来完成,但get方法会阻塞直到任务执行完返回结果,FutureTask非常适合用于耗时的计算,主线程可以在完成自己的任务后,再去获取
最详细集合源码解析之ConcurrentHashMap集合源码解析(二)
(1)ConcurrentHashMap是HashMap的线程安全版本; (2)ConcurrentHashMap采用(数组 + 链表 + 红黑树)的结构存储元素; (3)ConcurrentHa
最详细集合源码解析之ConcurrentHashMap集合源码解析(一)
ConcurrentHashMap是HashMap的线程安全的版本,其内部使用的是数组+链表+红黑树的结构来存储元素。 带着问题来看源码,可能效果更好,所以开篇我先放几个问题,让大家带着思考去
java并发包之LongAdder源码解析
LongAdder这个类是是jdk1.8开始有的,这个类的主要作用就是用来计数的,并且是线程安全的类,说到计数,那么我们会想到java并发包里有AtomicLong这个原子类,同样可以用来计数,那为什
最详细集合源码解析之HashMap源码解析
HashMap是以key,value这种键值对形式存储数据,在jdk1.8开始底层是由数组,链表,红黑树而形成的,在链表长度达到8的时候,并且数据总数达到64,就会将链表转为红黑树。
线程池源码解析
线程池的具体使用方法和参数解析等我在之前已经讲解过,如果对线程池基本用法和概念不清晰的可以先看下我之前的线程池的文章,这里就通过一张线程池运行流程图来帮助大家去简单了解下线程池的工作原理。
Java equals方法详解
对象均有内存地址和和其具体内容,而object中的equals方法是比较的两个对象内存地址是否相同,即obj1.equals(obj2)为true,这表示两者是引用同一个对象
ThreadLocal源码分析
ThreadLocal类提供了线程局部 (thread-local) 变量。这些变量与普通变量不同,每个线程都可以通过其 get 或 set方法来访问自己的独立初始化的变量副本。