多线程与高并发

进程、线程的区别

一个进程中,可以有多线线程。进程负责分配内存,线程负责调度,多个线程共享一块内存

如何保证线程顺序执行

  1. 使用join方法,t1中调用t2的join方法,等待t2的执行完成再继续执行
  2. 可以使用wait notify

线程有哪几种状态

  1. new状态,对象创建,但是还未调用start方法
  2. ready状态,就绪状态,等待被cpu调度
  3. running状态,运行状态
  4. waiting状态,等待状态
  5. blocked状态,阻塞状态
  6. teminated状态,死亡状态

线程池有哪些

ForkJoinPool 分叉合并
ThreadPoolExecutor 线程池

线程池的参数(手动定义线程池7个参数)

  1. 核心线程数
  2. 最大线程数
  3. 空闲时间
  4. 空闲时间单位
  5. BlockingQueue 任务队列
  6. 线程工厂(可以自定义线程名称,方便出错时回溯)
  7. 拒接策略(1.抛异常 2.扔掉 3.扔掉最后一个 4.调用者线程处理)可以自定义

线程池执行过程

  1. 初始化线程池,当有第一个任务时,创建线程,结束后作为核心线程,一直到核心线程数满了为止
  2. 如果核心线程数满了,再来线程时,进入队列
  3. 如果队列满了,创建线程,直到最大线程数
  4. 如果到达最大线程数,那么执行拒绝策略

如何管理Future结果

使用CompletableFuture类管理多个Future结果

有了List为什么还要有queue

queue对于多线程提供了更多的支持,例如poll、offer、peek方法

sychronized锁升级过程

  1. 无锁
  2. 偏向锁,至于一个线程访问时
  3. 轻量级锁(自旋锁),等待线程少或者线程执行时间短时采用自选锁
  4. 重量级锁,自旋锁在10次以上或者线程过多时就会升级为重量级锁

java中有哪些锁

悲观锁(排他锁)、乐观锁(自旋锁)、共享锁、读写锁、分段锁
悲观锁:sychronized
乐观锁:AtmoicXX
读写锁:ReentrantReadWriteLock
分段锁:LongAdder、concurrentHashMap

常用的锁

  • sychronized
  • ReentractLock
  • countDownLatch 计数器
  • CyclicBarrier 栅栏
  • Phaser 用于阶段执行
  • Seamphore 信号灯
  • Exchanger 交换器
  • LockSupport

sychronized与ReentractLock的区别

是否需要手动释放锁是否语言自带底层实现扩展性
sychronized自动释放锁锁升级
ReentractLock手动释放锁cas支持自定义condition,更加灵活

ValHandler

jdk9自带,指向对象的引用,可以通过这个对象,来完成cas操作

AQS内部原理

使用state+双端队列实现
每重入一次,state+1,当state为0,即无锁
如果是公平锁,新加入的线程,排到队列末尾,如果是非公平锁,新加入的线程直接参与争抢。

volatile实现细节

  1. 字节码层面 ACC_VOLATILE

  2. JVM层面:

    StoreStore
    volatile写操作
    StoreLoad

    LoadLoad
    volatile读操作
    LoadStore

  3. os和操作系统层面 lock指令
    volatile依赖硬件以及操作系统,不同的jvm有不同的实现

synchronized实现细节

  1. 字节码层面 ACC_SYNCHRONIZED
    monitorenter monitorexit
  2. jvm层面 c/c++调用操作系统提供的同步机制
  3. os和操作系统层面 lock指令
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值