内容简介:重读下《Java并发编程的艺术》,根据目录以及自己的学习习惯,重新排序了目录结构,更容易切入。可以根据这些概要更好的复习与回顾。
重读下《Java并发编程的艺术》,根据目录以及自己的学习习惯,重新 排序 了目录结构,更容易切入。可以根据这些概要更好的复习与回顾。
1.Java 并发编程基础
-
1.1 理解线程,分别从 什么是线程、为什么要使用多线程、线程优先级、线程的状态、Daemon线程角度来讲述
-
1.2 启动和终止线程,分别从构造线程、启动、终断和终止角度讲述
-
1.3 线程间通讯,分别从volatile和synchronized 关键字、等待通知、管道输入和输出、Thread.join()、ThreadLocal使用角度讲述
2.Java 中的线程池
-
2.1 从线程池原理、线程池使用:创建、提交任务、关闭、配置、监控角度来讲述。补充:知道几种常见的线程池,理解参数配置
-
2.2 流程是提交线程-核心线程池是否已满- 队列是否已满-线程池是否已满-按照策略处理无法执行的任务
-
2.3 线程池基本参数如:corePoolSize线程池基本大小-任务队列-ThreadFactory-线程池最大数量-饱和策略
3.Executor 框架
-
3.1 理解Executor接口框架,其成员主要:ThreadPoolExecutor、ScheduledThreadPoolExecutor、Future接口、Runnable接口、Callable接口,工具类Executors
-
3.2 ThreadPoolExecutor详解,上述框架的核心类,分别从 FixedThreadPool、singleThreadExecutor、CachedThreadPool角度讲述
-
3.3 理解一个知识点即:FutureTask,异步计算的结果,明白其作用、使用、实现原理
4.Java 并发容器和框架
-
4.1 要知道ConcurrentHashMap出现的原因,实现关键点记住分段锁、Segment等,另外同类型的要知道ConcurrentLinkedQueue
-
4.2 知道 Java 中的阻塞队列,阻塞队列实现原理即当队列满了不会让你继续入队,出队同理,典型的阻塞队列如 ArrayBlockingQueue、LinkedBlockingQueue等
-
4.3 一个少见的知识点 Fork/Join框架
5.Java 中的并发 工具 类
-
5.1 等待多线程完成的 CountDownLatch,允许一个或者多个线程等待其他线程完成操作
-
5.2 同步屏障 CyclicBarrier ,让一组线程到达一个屏障,直到最后一个线程到达,屏障解除。注意对比 CountDownLatch 的区别
-
5.3 控制线程并发数的 Semaphore,协调各类线程让其合理的使用公共资源
-
5.4 线程间交换数据的 Exchanger
6.Java 中的锁
-
6.1 Lock接口 其实现原理基本上都是通过聚合了一个AQS的子类来完成线程访问控制的
-
6.2 队列同步器 AQS是实现锁的关键,其使用一个int成员变量表示同步状态,通过内置的FIFO队列完成资源获取线程的排队工作
-
6.3 重入锁 ReentrantLock 表示该锁能够支持一个线程对资源的重复加锁
-
6.4 读写锁 可以同一时间允许多个线程访问,通过分离读锁和写锁,并发性比一般的排他锁有了很大提升
-
6.5 Condition接口,理解它的作用,可以更加精细的控制多线程的唤醒与休眠
-
6.x 这部分一个常见的对比就是Sync与Lock的区别联系。从中要知道悲观锁与乐观锁的概念、公平锁与非公平锁的概念。
7.Java 并发编程底层实现原理
-
7.1 volatile的应用与原理,记住其实现关键字内存屏障,记得要对比Sync的区别和联系
-
7.2 synchronized的实现原理与应用 ,记住JVM基于进入和退出Monitor对象来实现方法和代码块同步的 对于普通方法,锁是当前实例对象 对于静态同步方法,锁是当前类的Class对象 对于同步方法块,锁是Sync括号里配置的对象
-
7.3 原子操作的实现原理,Java中实现原子操作是锁和CAS操作。CAS操作面临一个ABA和循环时长问题
8.Java 内存模型
-
8.1 Java内存模型的基础,关键问题:通信和同步
-
8.2 重排序 编译器和处理器会对操作进行重排序
-
8.3 顺序一致性
-
8.4 volatile的内存语义
-
8.5 锁的内存语义
-
8.6 final的内存语义 这一点在日常的博客中见的比较少,切入点可能是在多线程如何确保用final修饰的常量不会被改变?或者说final修饰的变量在一个线程中被赋值,另一个线程中会不会得到同样的数值?
-
8.7 happens-before,如果一个操作结果需要对另一个操作结果可见,则这两个操作之间必须具备happens-before关系
-
8.8 双重检查锁定与延迟初始化,经典的单利双锁问题
9.Java 中的13个原子操作
- 原子操作比较容易理解,经典问题类似:i++操作是否线程安全?JDK1.5开始提供Atomic包来保证原子操作安全,一共有13个操作。
10.Java 并发编程实战
- 这部分就理解下生产者与消费者、多生产者与多消费者、线程池与生产消费者模式
以上所述就是小编给大家介绍的《Java 并发编程的艺术概要》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- MySQL 索引设计概要
- 应用密码学概要(一)
- [译]Python的Numpy概要介绍
- numpy之-概要,数据,类型和示例
- Ops.CI/CD-持续交付概要笔记
- 一份全面的“安全概要设计”是怎样的?
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
CSS 压缩/解压工具
在线压缩/解压 CSS 代码
XML 在线格式化
在线 XML 格式化压缩工具