丁一夫的个人博客

你的恶毒和善良都不够纯粹,所以痛苦。

0%

HashMap

JDK1.8

1. 数据结构

数组+链表的数据结构,但是当链表长度超过一定阈值(默认为8)时,链表会转换为红黑树,以提高搜索效率,当长度为6时退化为数组。

HashMap最好在设定的时候就估算一下容量的大小,因为扩容是一个极其消耗资源的操作,尽量避免扩容。

阅读全文 »

Java的线程池是Java并发包(java.util.concurrent)中的一个重要特性,它可以管理和控制线程的执行。线程池的主要目标是减少在创建和销毁线程上所花费的时间,以及系统资源的消耗,新的任务可以复用已有的线程,当线程没有任务时,它们并不会被立即销毁,而是可以等待新的任务。

阅读全文 »

一、AQS

1. 什么是AQS

  • AQS(AbstractQueuedSynchronizer)是Java并发编程框架中的一个核心组件,它用于构建锁和其他同步组件。
  • AQS提供了一个基于FIFO队列的框架,可以用来构建锁或者其他需要多线程访问或者共享资源的场景。
  • AQS的主要使用方式是继承,子类通过继承AQS并实现其方法来管理其状态。
阅读全文 »

ThreadLocal是Java语言提供的一种线程封闭工具。可以把它想象成一个容器,它可以存储每个线程的独立变量,这些变量对于每个线程来说都是独立的,即一个线程不能访问另一个线程的ThreadLocal变量。

ThreadLocal常常用于实现线程安全,尤其是在并发编程中,因为它可以为每个线程创建一个单独的变量副本。这样,每个线程都可以独立地改变自己的副本,而不会影响其他线程的副本。这种特性使得它非常适合用于实现线程级别的数据隔离,例如用户会话、事务管理等。

阅读全文 »