线程和线程池
〰️线程和线程池
本文介绍了Java中的ThreadLocal及其作用、原理和内存泄露问题,详细解释了如何创建线程池及其常见参数,并讨论了线程池的拒绝策略和线程异常后的处理方式。ThreadLocal用于为每个线程绑定私有数据,避免共享变量的并发问题。创建线程池推荐使用ThreadPoolExecutor构造函数而非Executors工具类,以避免资源耗尽风险。线程池的拒绝策略包括抛出异常、调用线程运行任务、直接丢弃任务等。对于线程异常,使用execute()提交任务时会创建新线程替代,使用submit()提交任务时异常被封装在Future中,线程继续复用。
java并发编程
🪄java并发编程
介绍了Java线程的运行机制、与操作系统线程的关系、线程与进程的区别、线程的生命周期和状态、线程上下文切换、以及线程的创建方式。文章详细解释了用户线程和内核线程的区别,Java线程从JDK 1.2起基于操作系统的原生线程实现。线程的生命周期包括新建、可运行、阻塞、等待、超时等待和终止状态。还讨论了Thread#sleep()和Object#wait()方法的区别及其设计原因,强调了调用start()方法启动线程的重要性。
java集合源码解析
🧩java集合源码解析
本文详细解析了Java集合中的HashMap源码,包括其关键方法和属性。重点介绍了当链表长度超过阈值时如何通过treeifyBin()方法将其转换为红黑树,以及loadFactor和threshold的作用。还分析了HashMap的四种构造方法及其初始化过程,特别是putMapEntries和put方法的实现细节。
java集合
🌼java集合
本文详细介绍了Java集合框架中的Queue、Deque、ArrayDeque、LinkedList、HashMap、TreeMap、ConcurrentHashMap等数据结构的特性、区别及其源码分析。重点包括ArrayDeque与LinkedList的性能比较,HashMap为何长度为2的幂次方,集合判空、转Map、遍历、去重、转数组等使用注意事项,以及ArrayList和LinkedList的源码分析及其增删改查操作的实现细节。
java基础之23个知识点
🧮java基础之23个知识点
这篇文章总结了23个Java基础知识点,涵盖了编译与解释、关键字、自增自减运算符、取模与取余、移位运算符、基本数据类型、重载与重写、构造方法、接口与抽象类、拷贝类型、==与equals的区别、hashCode、自定义异常、泛型、反射、注解、SPI与API的区别、Java序列化、serialVersionUID、I/O流、值传递、代理模式、以及BigDecimal的使用等内容。这些知识点对于Java面试和技术分享非常重要。