![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java基础
文章平均质量分 85
捕若审若判若
爱若信若盼若
展开
-
TLAB简单介绍
TLAB简单介绍定义TLAB(Thread Local Allocation Buffer)线程本地分配缓存,线程专用的分配区域TLAB为多线程环境下分配内存提高效率Java在new对象时,大部分对象在堆上TLAB分配,有一部分在栈上分配或者是在堆上直接分配,可能在Eden区也可能在老年代。某些GC算法,可能直接在老年代上分配,例如G1 GC中的humongous allocation(大对象分配),在对象超过Region一半大小的时候,直接在老年代的连续空间分配单线程应用采用**bump-th原创 2021-05-13 11:56:52 · 637 阅读 · 0 评论 -
AQS 简单介绍
AQS AbstractQueuedSynchronizerAQS提供了一种框架,以使用FIFO的同步队列实现阻塞锁AQS成员变量 // 同步队列的头。 // 公平的锁先入先出。 private transient volatile Node head; // 等待队列的尾 private transient volatile Node tail; // 同步器的状态,根据当前状态进行判断是否可以获得当前锁 // 如果当前state是0,那么可原创 2021-04-28 21:57:56 · 212 阅读 · 0 评论 -
Java线程池ThreadPool简单介绍
线程池线程池·好文分享线程池的特点避免创建线程和销毁线程的资源消耗,创建线程需要分配内存,列入调度,线程切换时,还需要内存换页,如果CPU的缓存被清空,还需要重新从内存中读取信息线程池能帮助管理线程线程池能够提高相应速度,直接从线程池请求线程比创建线程的时间开销小,降低处理请求的延迟能够避免无限创建线程引起的OutOfMemoryError线程池的创建线程池的构造函数public ThreadPoolExecutor(int corePoolSize,原创 2021-04-25 23:30:03 · 132 阅读 · 0 评论 -
ThreadLocal原理简介和内存泄漏
ThreadLocalThis class provides thread-local variables. These variables differ from their normal counterparts in that each thread that accesses one (via its {@code get} or {@code set} method) has its own, independently initialized copy of the variable. {@原创 2021-04-20 22:18:17 · 85 阅读 · 0 评论 -
ReentrantLock 源码介绍
参考B站寒食视频Lock接口ReentrantLock实现了Lock接口,因此先看Lock接口的主要方法/** * Lock提供了区别于synchronized的一种具有更多广泛操作的同步方式, * 它能支持更多灵活的结构并且可以关联多个Condition对象 */public interface Lock { // 获取锁,假如当前锁正在被其他线程占用,将会等待,直到获取为止 void lock(); // 获取锁,假如当前线程在等待过程中被中断,将退出等待,并抛原创 2021-04-12 18:27:41 · 96 阅读 · 0 评论 -
ConcurrentHashMap相关知识点
ConcurrentHashMap 类注释所有的操作都是线程安全的,我们在使用时,无需再加锁;多个线程同时进行 put、remove 等操作时并不会阻塞,可以同时进行,和 HashTable 不同,HashTable 在操作时,会锁住整个 Map;迭代过程中,即使 Map 结构被修改,也不会抛 ConcurrentModificationException 异常;除了数组 + 链表 + 红黑树的基本结构外,新增了转移节点,是为了保证扩容时的线程安全的节点;提供了很多 Stream 流式方法,原创 2021-04-11 17:02:49 · 478 阅读 · 0 评论