并发编程读书笔记

并发编程的挑战

并发编程的目的是为了让程序运行得更快,但是,并不是启动更多的线程就能让程序最大限度地并发执行。在进行并发编程时,如果希望通过多线程执行任务让程序运行得更快,会面临非常多的挑战,比如上下文切换的问题、死锁的问题,以及受限于硬件和软件的资源限制问题。
什么是上下文切换?
死锁
什么是并发编程的资源限制
线程(基础概念)
并发 顺序 并行 串行 区别
为什么要使用多线程?
线程的创建方式
线程的生命周期及线程状态
线程的基本方法
Thread Safety
ThreadLocal 介绍
多线程基础
CPU Cache模型
Java内存模型(Java Memory Mode,JMM) happens-before规则 as-if-serial语义 happens-before 和 as-if-serial
什么是指令重排? 数据依赖性
控制依赖关系
什么是可见性问题? 顺序一致性模型
volatile 什么是共享资源? && 数据同步 && 资源同步
锁的内存语义 synchronized synchronized关键字的缺陷
volatile和synchronized比较
类锁 对象锁 私有锁
java中的锁–待完善
final域的内存语义
并发编程 原子性 可见性 有序性
数据不一致问题
生产者消费者模型
线程间通信
同步阻塞与异步非阻塞
单线程间通信 多线程间通信 线程休息室wait set
synchronized关键字的缺陷
自定义显式锁BooleanLock
线程池
Java中的线程池 Java中的阻塞队列
线程池任务队列
线程池饱和策略
Executor框架 Executor框架的两级调度模型
Executor框架的结构
Executor框架的使用
Executor框架的成员
FutureTask简介

你可能感兴趣的:(并发编程,java,jvm,面试)