美文网首页
1.13减少线程上下文的切换

1.13减少线程上下文的切换

作者: 全栈未遂工程师 | 来源:发表于2016-05-03 09:18 被阅读188次

当执行的次数比较少的时候,使用多线程由于需要执行上下文切换(而上下文切换需要花费一些时间),并发执行消耗的时间比串行消耗的时间要多。

如何减少上下文切换

  • 无锁并发编程

多线程竞争锁时,会引起上下文切换,所以多线程处理数据时,可以用一些办法来避免使用锁,如将数据的ID按照hash算法取模分段,不同的线程处理不同段的数据。

  • CAS算法

Java的Atomic包使用CAS算法来更新数据,而不需要加锁。

  • 使用最少线程

避免创建不需要的线程,比如任务很少,但是创建了很多线程来处理,这样会造成大量线程都处于等待状态。

  • 协程

在单线程里实现多任务的调度,并在单线程里维持多个任务间的切换。

相关文章

  • 1.13减少线程上下文的切换

    当执行的次数比较少的时候,使用多线程由于需要执行上下文切换(而上下文切换需要花费一些时间),并发执行消耗的时间比串...

  • Java并发编程-并发编程带来的问题

    并发编程带来的问题 上下文切换 多线程不一定快 如何减少上下文切换 减少上下文切换的方法有无锁编程、CAS算法、使...

  • java并发编程艺术笔记

    1. 并发编程遇到的挑战 多线程 减少上下文切换的方式: 无锁并发编程:多线程竞争锁的时候会引起上下文的切换,在多...

  • 并发编程01-对于并发的认知

    多线程和并发的概念 上下文切换 如何减少上下文切换无锁并发编程CAS算法使用最少线程协程 死锁避免死锁的几个常见的...

  • Smart Thread Pool

    1.why 需要使用线程池? 减少线程之间上下文切换;减少内存使用占用 2.why 不使用 .Net默认线程池 ....

  • 并发基本原理以及常用工具类介绍

    并发编程的挑战: 频繁的上下文切换 死锁(线程循环依赖对方释放锁) 资源限制的挑战 如何减少上下文切换: 无锁并发...

  • 2:并发编程的挑战

    1:上下文切换 减少上下文切换的方法:无锁并发编程、CAS算法、使用最少线程和使用协程。 2:死锁 避免死锁的几种...

  • 第一章 并发编程挑战

    一个任务从保存到再加载的过程就是一次上下文切换 如何减少上下文的切换 无锁并发编程。多线程竞争锁时,会引起上下文切...

  • 并发编程的挑战

    1、线程上下文切换:任务从保存到再加载的过程就是一次上线文切换,线程上下文切换是需要开销的。 2、引起线程上下文切...

  • JAVA并发编程艺术(一)—— 并发编程的挑战

    本系列文章只做个人读书笔记 1、上下文切换 减少上下文切换的方法有 无锁并发编程、CAS算法、使用最少线程使用协程...

网友评论

      本文标题:1.13减少线程上下文的切换

      本文链接:https://www.haomeiwen.com/subject/gxwlrttx.html