线程上下文的切换


上下片切换

单核CPU也支持多线程执行代码,通过分配时间片来实现多线程,切到下一个任务前会保留上一个任务的状态,方便回来,这也称之为上下片切换(切换所需的开销,以及线程有创建的时间开销就是多线程的弊端)
在这里插入图片描述

减少上下文切换的开销:

CPU上下文切换分为三类:进程、线程、中断上下文切换

无锁并发编程:多线程处理数据时,可以避免使用锁,比如将数据的ID按照Hash算法取模分段,不同的线程处理不同段的数据(分好就不竞争了)

CAS算法:java的Atomic包使用CAS算法来更新数据,就不需要加锁

使用最少线程和使用协程:使用最少线程,避免创建不需要的线程(可以在配置里限制最大工作线程数,多了就不允许存在了)

协程:一个线程完成多个任务,任务间的来回切换

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值