Java并发篇

进程 & 线程

  • 进程
操作系统进行资源分配的最小单元
  • 线程
操作系统任务分配的最小单元

线程安全如何保证

加锁

Volatile & Synchroniaed

  • Volatile:保证变量的线程可见性,通常适用于一个线程写,多个线程读的情况
  • Synchroniaed 用来加锁
  • Volatile:不具备原子性,禁止指令重排

Java的线程锁机制

  • Java 的锁就是在对象的MarkWord 中记录一个锁状态,无锁,偏向锁,轻量级锁,重量级锁对应不同的锁状态
  • Java的锁机制,就是根据资源的竞争程度不断进行锁升级的过程

AQS

  • AQS 是一个Java 线程同步的框架,是JDK中很多锁框架的核心实现框架
  • 在AQS中,维护了一个信号量 state,和一个线程组成的双向链表队列,其中,这个线程队列,就是用来给线程排队的,而state就像是一个信号灯,用来控制线程排队或放行,在不同的场景下,有不同的意义

AQS实现可重入锁

  • 在可重入锁的场景下,state就表示加锁的次数,0标识无锁,每加一次锁,stats就加1,每释放一次锁,state就减1

并发工具

  • CountDownLatch 线程同步执行
  • CylicBarrier 线程依次执行
  • Seamphore 线程交替执行

ForkJoin

  • Fork 拆分
  • Join 汇总

猜你喜欢

转载自blog.csdn.net/weixin_44971379/article/details/121595231
今日推荐