Java并发编程——笔记与总结

JUC并发包结构图

1. 基础知识


  • Java并发编程2——Java线程:https://blog.csdn.net/qq_41157876/article/details/114902271
    • 线程的创建(Thread,Runnable,FutureTask)
    • 线程的常用方法
    • 线程的生命周期和状态
      • 操作系统层面:五种状态
      • Java API层面:六种状态
    • 查看线程和进程方法
    • 锁对象的方法:wait()和notify()
      • 执行原理
      • WAITING与BLOCKED状态的区别
      • wait()与sleep()的区别
      • notify()与notifyAll()的区别
      • 虚假唤醒
    • LockSupport类的方法:park()和unpark(thread)
      • 执行原理

  • Java并发编程3——JMM / synchronized / volatile / Monitor / 加锁算法:https://blog.csdn.net/qq_41157876/article/details/114930398
    • Java内存模型(原子性,可见性,有序性)
    • volatile
      • 可见性:内存语义
      • 有序性:内存屏障
    • synchronized
      • 两种加锁方式
        • 实例加锁:synchronized(this) / 普通方法
        • 类对象加锁:synchronized(this.class) / 静态方法
      • 底层原理:Monitor
        • monitorenter / monitorexit / ACC_SYNCRONIZED
        • C++结构体:Entry_list,Wait_List,Owner
      • 对象头
      • 重量级锁
      • 轻量级锁
      • 偏向锁
      • 其他优化:自旋,锁粗化,锁消除

2. executor

  • Java并发编程4——Executor / ExecutorService / ThreadPoolExecutor线程池:https://blog.csdn.net/qq_41157876/article/details/115297036
    • 继承关系
      • Executor接口(顶层接口)
      • ExecutorService接口
      • AbstractExecutorService抽象类
      • ThreadPoolExecutor实现类
    • ThreadPoolExecutor
      • 属性
      • 线程池状态(ctl属性)
      • 构造器 / 参数
      • 线程池运行机制
      • 源码级别
        • Work类
    • Executors工具类提供的线程池实现
      • nexFixedThreadPool:固定大小的线程池
      • newCachedThreadPool:带缓冲池的线程池
      • newSingleThreadExecutor:单线程线程池
    • 其他
      • submit() / invokeAny() / invokeAll()使用示例

  • Java并发编程5——Future 和 Callable:
    •  

3. Atmoic原子类

  • Java并发编程6——Atomic家族1:https://blog.csdn.net/qq_41157876/article/details/115331426
    • 概述
    • 基本类型(boolean, int, long, 对象)
      • AtomicBoolean
      • AtomicInteger
      • AtomicLong
      • AtomicReference
    • 数组(Long, Integer, 对象)
      • AtomicLongArray
      • AtomicIntegerArray
      • AtomicReferenceArray
    • 字段更新器(指定对象的指定字段)
      • AtomicLongFieldUpdater
      • AtomicIntegerFieldUpdater
      • AtomicReferenceFieldUpdater
    • 带版本号引用类型(对象,解决ABA)
      • AtomicStampedReference
      • AtomicMarkableReference
    • 原子累加器(JDK1.8):AtomicLong和AtomicDouble的升级类型,专门用于数据统计,性能更高。
      • DoubleAccumulator
      • DoubleAdder
      • LongAccumulator
      • LongAdder

  • Java并发编程7——Atomic家族2:https://blog.csdn.net/qq_41157876/article/details/115342518
    • 原子累加器(JDK1.8):AtomicLong和AtomicDouble的升级类型,专门用于数据统计,性能更高。
      • LongAdder / DoubleAdder
      • LongAccumulator / DoubleAccumulator
    • 伪共享问题
      • 缓存行失效 / 伪共享
      • @sun.misc.Contended注解
    • Unsafe对象

3.locks 锁相关

4. tools工具包


  • Executors jdk自带的工具实现 
    •  

5. collections 安全的集合类

  • Queue 阻塞队列和非阻塞队列

  • Java并发编程12——CopyOnWrite系列:https://blog.csdn.net/qq_41157876/article/details/115465154
    • CopyOnWrite系列
      • 写时复制;弱一致性;写加锁,读快照
    • CopyOnWriteArrayList
      • 属性:reentrantLock + volatile Object[]
      • add方法:先加锁,复制写,改变引用对象,解锁
      • get方法:不加锁,对snapshot操作,存在弱一致性问题
    • CopyOnWriteArraySet
      • 内部用CopyOnWriteArrayList来代理

  • Java并发编程13——concurrentHashMap:
    • ​​​​​​​

6. 其他并发相关

  • Java并发编程14——ThreadLocal:https://blog.csdn.net/qq_41157876/article/details/107680612
    • 概述
      • 与synchronized的区别
    • 用法
    • 源码分析
      • Thread类:ThreadLocalMap threadLocals属性
      • ThreadLocalMap类:ThreadLocal的静态内部类,实际是Entry<ThreadLocal, Object>数组
      • Entry类:ThreadLocalMap的静态内部类,继承弱引用
    • ThreadLocal常用方法
      • get(),set()
      • 延迟构造性质
    • 内存泄漏
      • ​​​​​​​为什么Entry要继承弱引用
      • 内存泄漏原因及避免方法
    • InheritabIeThreadLocal
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值