摘要: 引言 JUC即java.util.concurrent,是java提供的用于多线程处理的工具类库。重点关注 ConcurrentXXX、AtomicXXX、Executor、Caller&&Future、Queue、Locks。 打开jdk包,JUC代码就在rt.jar包中,concurrent下有 阅读全文
posted @ 2020-02-18 12:17 习惯沉淀 阅读(1098) 评论(2) 推荐(0) 编辑
摘要: 链接 Java 语言特性【一】——JUC(Java 并发工具包) 阅读全文
posted @ 2020-02-18 12:16 习惯沉淀 阅读(304) 评论(0) 推荐(0) 编辑
摘要: 引言 Java 为多线程提供的一些机制,例如 ThreadLocal 用来保存线程独享的数据, Fork/Join 机制用于大任务的分割与汇总,Volatile 对多线程数据可见性的保证,以及 Interrupt——线程的中断机制。 另外,ThreadLocal 的实现机制、Fork/Join 的工 阅读全文
posted @ 2020-02-18 12:14 习惯沉淀 阅读(207) 评论(0) 推荐(0) 编辑
摘要: 引言 线程池通过复用线程,避免线程频繁地创建和销毁。Java 的 Executor 工具类中提供了 5 种类型的线程池创建方法,下面看下它们的特点和适用场景。 线程池创建方法及使用场景 如下图所示: 1、固定大小线程池 特点是线程数固定,使用无界队列,适用于任务数量不均匀的场景、对内存压力不敏感,但 阅读全文
posted @ 2020-02-18 12:12 习惯沉淀 阅读(259) 评论(0) 推荐(0) 编辑
摘要: 引言 这部分内容详解线程的同步与互斥,解决线程同步与互斥的主要方式是 CAS、synchronized 和 lock。 CAS 与 ABA 问题 什么是 CAS ? CAS 是乐观锁的一种实现方式,是一种轻量级锁,JUC 中很多工具类的实现都是基于 CAS 的,用于解决线程的同步与互斥。解决线程同步 阅读全文
posted @ 2020-02-18 12:10 习惯沉淀 阅读(539) 评论(0) 推荐(0) 编辑
摘要: 引言 线程是 JVM 执行任务的最小单元,理解线程的状态转换是理解多线程问题的基础。在 JVM 运行中,线程共有六种状态:NEW、RUNNABLE、BLOCKED、WAITING、TIMED_WAITING、TERMINATED。这些状态对应 Thread.state 枚举类中的状态。 线程状态转换 阅读全文
posted @ 2020-02-18 12:05 习惯沉淀 阅读(322) 评论(0) 推荐(0) 编辑
摘要: 引言 多线程协作时,因为对资源的锁定与等待会产生死锁,在明白死锁概念后需要了解死锁产生的四个基本条件,明白竞争条件和临界区的概念,还需要知道通过破坏造成死锁的4个条件来防止死锁。 下面对死锁概念、死锁的产生原因、死锁的四个必要条件等内容作记录。 在描述死锁概念之前先理解竞态条件和临界区两个概念。 竞 阅读全文
posted @ 2020-02-18 12:04 习惯沉淀 阅读(410) 评论(0) 推荐(0) 编辑