volatile

内存屏障(Memory Barrier)

happen-before原则

程序次序规则

监视器锁规则

volatile变量规则

线程启动规则

线程加入规则

传递性规则

锁框架

Lock和Condition接口

Lock的一个实现类ReentrantLock

Lock接口方法

public interface Lock {
void lock();
void lockInterruptibly() throws InterruptedException;
boolean tryLock();boolean tryLock(long time, TimeUnit unit) throws InterruptedException;
void unlock();
Condition newCondition();
}

可以通过lock的newCondition()获取Condition对象,

public interface Condition {
void await() throws InterruptedException;
void awaitUninterruptibly();
long awaitNanos(long nanosTimeout) throws InterruptedException;
boolean await(long time, TimeUnit unit) throws InterruptedException;
boolean awaitUntil(Date deadline) throws InterruptedException;
void signal();
void signalAll();
}

其中await就是synchronized中的wait方法

signal和signalAll相当于notify和notifyAll

可重入锁

公平锁和非公平锁

读写锁

锁降级 写锁降级为读锁,只能先加写锁在加读锁,并且是单个线程

读写锁是不支持锁升级的,即读锁后添加写锁

队列同步器AQS

原子类

ABA问题及解决方案

添加版本号

并发容器介绍

并发容器

CopyOnWriteArrayList

ConcurrentHahsMap

阻塞队列

ArrayBlockingQueue

SynchronousQueue

LinkedBlockingQueue

线程池

线程池类

可以通过Executors类创建线程池

也可以手动创建线程池

public ThreadPoolExecutor(
int corePoolSize, //核心线程池数量
int maximumPoolSize,//最大线城市数量 核心+临时
long keepAliveTime,//临时线程最大空闲时间
TimeUnit unit,//时间单位
BlockingQueue<Runnable> workQueue,//队列
ThreadFactory threadFactory,//创建工程,用来自定义参数
RejectedExecutionHandler handler//拒绝策略
){......}
执行带返回值的任务

submit方法,返回值是一个future对象

submit函数中传入FutureTask对象,线程结束,从FutureTask获取

执行定时任务

ScheduledThreadPoolExecutor中的schedule方法

并发工具类

计数器锁 CountDownLatch
循环屏障CyclicBarrier
信号量Semaphore
数据交换Exchanger
Fork/Join框架