基本概念 | 同步异步(Asyc) 并行(Parallelism)、并发(Concurrency) 阻塞(blocking)/非阻塞 临界区 死锁(DeadLock)、饥饿(Starvation)、活锁(LiveLock) 线程三种基本状态 |
并行定律 |
并发级别 | 阻塞(sync),无饥饿(FIFO),无障碍,无锁,无等待 | |
并发理论(JMM) | 内存模型 线程通信,消息传递 happens-before规则 CAS |
|
并发关键字 | synchronized(Monitor机制 enter/exit),重入性,原子性 volatile(可见,有序 final:引用类型:只保证引用对象的地址不变,对象的属性是可以改变的 |
缓存一致性 指令重排序 java对象头,Markword |
线程安全 | 什么时线程安全 原子性,有序性,可见性 |
指令重排序 |
Lock 体系 | AQS ReentrantLock ReentrantReadWriteLock Condition await/signal LockSupport |
独占锁,共享锁 同步器,CLH同步队列,同步状态的获取和释放,线程阻塞和唤醒 锁降级 Condition的await和signal等待/通知机制 |
并发容器 | CopyOnWriteArrayList ConcurrentLinkedQueue ThreadLocal BlockingQueue Array/Linked |
扩容 Collections.synchronizedMap ThreadLocalMap |
线程池(Executor体系) | ThreadPoolExecutor ScheduledThreadPoolExecutor Callable 和 FutureTask |
newWorkStealingPool(int parallelism) |
原子操作类 | AtomicInteger AtomicReference AtomicReferenceArrayFieldUpdater |
|
并发工具类 | Semaphore:控制并发访问个数,acquire/release CountDownLatch:倒计时器 CyclicBarrier:循环栅栏 Exchanger:数据交换 |
|
Fork/Join | ForkJoinPool:利用Work-Stealing算法,并行处理任务,不保证处理顺序 | |
多线程问题 | 上下文开销 死锁 |
|
生产者-消费者 |
java跳表的并发问题
设计线程池的大小,怎样计算线程池的大小
线程池的核心参数,在java中的实现,以及任务抛弃策略
ConCurrentHashMap的架构和如何保证线程安全