- 上下文切换
时间片是CPU分配给各个线程的时间,因为时间非常短,所以CPU不断通过切换线程,让我们觉得多个线程是同时执行的,时间片一般是几十毫秒。而每次切换时,需要保存当前的状态起来,以便能够进行恢复先前状态。 - 如何避免上下文切换
方法:无锁并发编程,CAS算法,使用最少的线程和使用协程
具体:
项目 | Value |
---|---|
无锁并发编程 | synchronize偏向锁 |
CAS算法 | 利用Atomic下使用CAS算法来更新数据,使用了乐观锁,可以有效的减少一部分不必要的锁竞争带来的上下文切换; synchronize轻量级锁 |
协程 | 在单线程里实现多任务的调度,并在单线程里维持多个任务间的切换 |
- 阻塞和非阻塞
阻塞和非阻塞通常用来形容多线程间的相互影响 - 并行和并发
并发指的是多个任务交替进行,而并行则是指真正意义上的“同时进行”。 - 同步异步
同步和异步通常用来形容一次方法调用。
同步方法:调用一开始,调用者必须等待被调用的方法结束后,调用者后面的代码才能执行。
异步调用:指的是,调用者不用管被调用方法是否完成,都会继续执行后面的代码,当被调用的方法完成后会通知调用者