Java 并发编程
总结 Java 并发编程领域实战知识
Young.Chen
关于我的一切 https://chenjiayang.me/about
展开
-
Thread setUncaughtExceptionHandler
setUncaughtExceptionHandler 用于获取线程运行时异常 线程在执行时是不能抛出 checked 异常的,IDE 只会提示你用 try-catch 包裹起来。因此主线程无法直接获取子线程的线程信息,而每个 Thread 可以通过 setUncaughtExceptionHandler 注册一个回调接口 setUncaughtExceptionHandler public cl...原创 2019-03-01 19:50:25 · 1771 阅读 · 0 评论 -
基于 “不可变类” 实现一个线程安全的 Integer 计数器
ImmutableIntegerCounter // final 修饰,不能继承 public final class ImmutableIntegerCounter { // final 修饰,不允许其他线程对其更改 private final int initial; public ImmutableIntegerCounter(int initial) { ...原创 2019-02-28 19:52:03 · 502 阅读 · 0 评论 -
用 Wait 和 Notify 实现 “生产者-消费者” 模型
生产者-消费者模型 import java.util.LinkedList; import java.util.concurrent.TimeUnit; public class ProducerConsumer { public static void main(String[] args) throws InterruptedException { final i...原创 2019-02-27 20:11:36 · 394 阅读 · 0 评论 -
详解 Java 中的 Wait 和 Notify 机制
写在前面 Wait 和 Notify 是 Java 面试中常见的问题,但是在平时工作中可能不常见到。大家或多或少知道些背景知识,例如二者均为 Object 类的方法,而不是 Thread 特有的(因为锁是每个对象都具有的特性,因此操作锁的方法也紧跟对象,没毛病),且都只能在同步代码块中调用(即前提是先获得对象的监视器锁,一般来说在 synchronized 代码块中使用),否则抛出异常 Illeg...原创 2019-02-26 20:09:42 · 2633 阅读 · 1 评论 -
ThreadPoolExecutor 核心源码深度解析
本文只介绍 ThreadPoolExecutor 源码的关键部分,开篇会先介绍 ThreadPoolExecutor 中的一些核心常量定义,然后选取线程池工作周期中的几个关键方法分析其源码实现。其实,看 JDK 源码的最好途径就是看类文件注释,作者把想说的全都写在里面了。 一些重要的常量 ThreadPoolExecutor 内部作者采用了一个 32bit 的 int 值来表示线程池的运行状态(...原创 2019-02-04 20:00:29 · 387 阅读 · 0 评论