在多线程处理任务的时候,线程的执行时间是由cpu分配了一个时间段,这个时间段称之为时间片,使得各个线程表面上看起来是并行执行的。

当一个线程让出cpu使用权,切换到另外一个线程执行的过程称之为多线程上下文切换。

Java中线程切换的原因有

1. 时间片到期,线程的时间片用完了,会切换线程执行。

2. 线程进入阻塞状态,可以参考线程的生命周期

显然,如若多线程切换的频率过高,这是耗时的,会导致效率下降,所以要减少线程的上下文切换:

1. 无锁并发编程

2. cas算法

3. 使用适量线程

4. 协程