带着问题重学 Java 并发编程

2019-08-16   阅读(289)  

基本概念

什么是并发编程?

为什么要用并发编程?

并发编程的缺点?

并行是什么意思?与并发的区别是什么?

什么是线程?什么是进程?有什么区别?

如何创建、启动 Java 线程?

如何优雅地停止一个线程?

什么是守护线程?

线程包括哪些状态?状态之间是如何变化的?

什么是线程池?

线程池包含哪些状态?

如何停止一个线程池?

导致并发编程出问题的根本原因是什么?

Java 隐式锁 - synchronized 关键字

Java 中的 volatile 关键字

Java 中的锁是什么?

Java 中的锁如何使用?有什么注意事项?

Java 中可重入锁、不可重入锁的测试

Java 中锁之间的对比

synchronized 锁的升级原理是什么?

什么是死锁?

如何避免死锁?

什么是活锁和饥饿?

Java 中的无锁技术是什么?如何使用?

什么是 Java 内存模型?

什么是 happens-before 原则?

什么是协程?Java 中如何支持?

 

JDK 1.8中的并发工具类

Lock、Condition 如何使用?

Semaphore 如何使用?

ReadWriteLock 如何使用?

StampedLock 如何使用?

CountDownLatch 如何使用?

CyclicBarrier 如何使用?

JDK 中的并发容器包括哪些?如何使用?

原子类包括哪些?如何使用?

Executor 如何使用?

Future 如何使用?

CompletableFuture 如何使用?

CompletionService 如何使用?

ForkJoinPool 如何使用?

 

扩展

并发编程的常见模式

Java 并发编程的学习资源推荐

Java 并发编程的总结图

© 2019 ConstXiong. 备案号:苏ICP备16009629号-3