单例的实现
静态内部类
类加载
枚举
单例模式(避免反射、序列化问题)
序列化之writeObject 和readObject
静态变量不能被序列化,个人的理解是静态变量是类变量,序列化的那一刻只是取了当时的值,后面静态变量再改变,但已经序列化的不会变。
线程池
参数ThreadFactory的作用及使用方法?
CatchedThreadPool: batch
FixedThreadPool:
SchedualThreadPool: 每分种自动解业务锁
SingleThreadExecutor: 产品导入导出
AQS: AbstractQueuedSynchronizer
CountDownLatch
多个或者一个线程等待一组线程完成,不可重置复用。
CyclicBarrier
多个线程相互等待,直到最后一个await,则所有线程继续向下走,扩展功能可以定义时传入一线程,在唤醒所有线程后先走此线程。可重置复用
Semaphore
控制线程并发数量,超数量的线程等待
Lock,Condition
Synchronized原理
锁升级过程
volatile指令重排
fast-fail和fast-safe
非线程安全的集合如ArrayList,HashMap等都属于fast-fail。这类集合会维护一个modCount,集合每次结构有变时会+1,当用集合的生成Iterate时,会将modCount赋值给iterater的expectModCoount,其他线程如果修改集合结束了,则Iterater会抛错
设计模式
集合类线程安全不安全