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框架