Java并发的知识点很多,下面涵盖了一个Java工程师应该掌握的并发的基本知识。理解其使用场景和基本原理,我们才能游刃有余的使用相关知识来解决问题。这篇文章只是整理一个提纲,后面的文章,我会选取重点和难点来详细讲解。
1. JVM 内存模型与线程
a.Java内存模型
b.主内存和线程内存的交互操作
c.原子性,可见性,有序性
d.先行发生原则
e.JVM锁优化方式
2. JVM线程的实现方式
a.实现方式
b.线程调度
c.状态转换
3. 创建线程
a.创建线程(Runnable,Thread)
b.线程池(ThreadPool)
c.线程组(ThreadGroup)
d.守护线程
4.线程状态控制
a.线程休眠(sleep)
b.priority
c.yield
d.setDaemon
e.join, interrupt
f.wait,notifyAll,notify
g.定时执行任务(Timer, TimerTask, TaskQueue, TimerThread)
h.Callable
5.线程异常
6. 实现线程安全的方式
a.不可变类 (String)
b.同步(synchronized ,Lock ,volatile)
c.非阻塞同步机制(Atomic)
d线程本地存储(线程内私有变量,Threadlocal,Web交互模型,一个请求一个线程)
7.基于AQS(AbstractQueuedSynchronizer)线程控制
a.ReentrantLock
b.ReentrantReadWriteLock
c.Semaphore
d.CountDownLatch
e.CyclicBarrier
8. 线程和集合
a.ConcurrentHashMap (分段锁)
b.CopyOnWriteArrayList,ConpyOnWriteArraySet
c.BlockQueue, LinkedBlockingQueue, ArrayBlockQueue, PriorityBlockingQueue, SynchronousQueue