文章506
标签266
分类65
Java线程池ThreadPoolExecutor分析与实战终

Java线程池ThreadPoolExecutor分析与实战终

前面两篇文章分析了Java中几种常见的线程池, 下面我们通过源码来看一看他们究竟在最底层是怎么实现的

本文内容包括:

  • ctl属性;
  • ThreadPoolExecutor中其他属性;
  • 任务提交的实现;
  • 内部类Worker(任务执行, 终止)
  • 线程池终止
  • 线程池的监控
  • 线程池的安排

源代码分析基于JDK11.0.5

如果觉得文章写的不错, 可以关注微信公众号: Coder张小凯

内容和博客同步更新~


系列文章入口:


Java线程池ThreadPoolExecutor分析与实战续

Java线程池ThreadPoolExecutor分析与实战续

在上一篇Java线程池ThreadPoolExecutor分析与实战的文章中, 手写了一个简单的线程池. 这篇紧接着上一篇, 通过分析JUC线程池源码, 来看看JDK中是如何设计线程池的

本文内容包括:

  • Executor接口
    • Executor接口源码分析
    • Executor两级调度模型
    • Executor结构
  • ExecutorService接口源码分析
  • AbstractExecutorService抽象类源码分析
  • 四种类型的线程池
    • ThreadPoolExecutor提供的构造函数
    • 线程池的处理流程
    • 四种线程池(Fixed, Cached, Single, Scheduled
    • 如何选择合适的线程池

文章部分节选自: Java线程池-ThreadPoolExecutor原理分析与实战

源代码分析基于JDK11.0.5

如果觉得文章写的不错, 可以关注微信公众号: Coder张小凯

内容和博客同步更新~


ThreadLocal源码解析

ThreadLocal源码解析

最近总结了一套阿里云的面试题, 其中有一个ThreadLocal和线程池配合使用造成内存泄露的问题. 当时写了答案但是感觉对于ThreadLocal的理解还不是特别深入, 所以想再看一下源码.


深入剖析Java中的void和java.lang.Void

深入剖析Java中的void和java.lang.Void

在Java的源码中, 使用到了很多Void类型(这里不是关键字void, 而是Void类). 本文解析了Java中Void类与void关键字的区别与作用


Java中自动拆装箱的陷阱

Java中自动拆装箱的陷阱

摘在看《深入理解Java虚拟机》一书时看到的问题,关于Java编译器在进行解语法糖时对于自动拆装箱做出的行为,有时会造成误解或者歧义,所以在此总结一下


为什么在Java中String被设计为不可变

为什么在Java中String被设计为不可变

最近在学习新的编程语言Scala了, 在Scala中变量分为val(不可变类型), 和var(可变类型). 突发奇想想到了在Java中的String都被声明为final, 也就相当于是Scala中都被声明为val了吧! 但是具体是为什么呢? 本篇文章带你探寻在Java中String被声明为不可变背后的秘密!

本篇文章主要内容:

  • String源码简单分析
  • String在JVM中的常量池的解析: 字面量, new, +连接, intern()
  • String中的==和equals
  • 什么是Java中的不可变? 不可变的好处与坏处?
  • 证明回答String被设计成不可变和不能被继承的原因
  • ……

示例代码: https://github.com/JasonkayZK/Java_Samples/tree/java-string