线程上下文的切换


上下片切换

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

减少上下文切换的开销:

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

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

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

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

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