如何减少线程上下文切换

1. 无锁并发编程。多线程竞争锁,会引起上下文切换。如果是多线程处理数据时,可以根据hash分段处理数据,避免锁竞争

2. CAS算法。java的 atomic原子类 ,compare and swap,比较再交换,也是一直无锁算法。内存值V,旧的预期值A,要修改的新值B。如果内存值和A相同,则修改成B,否则什么都不做。CAS算法与sychronized相对,算是乐观锁。

3  减少不必要的线程数量

4.协程,在单线程里实现多任务的调用。协程是运行在线程之上,当一个协程完成后,可以主动让出,让另一个协程运行在上面

原文地址:https://www.cnblogs.com/scru/p/14506703.html