美文网首页JAVA并发编程笔记
并发编程之--上下文切换

并发编程之--上下文切换

作者: 404_null_nil | 来源:发表于2017-08-27 11:24 被阅读0次

    1.1 上下文切换

          CPU通过时间片分配算法来循环执行任务,当前任务执行一个时间片后会切换到下一个任务,在切换前会保存上一次任务的状态,以便下次切换回来,可以再加载这个任务的状态。所以任务从保存到再加载的过程的过程就是一次上下文的切换。比如我们在读一本英文书时,有一个单词不认识,需要去查字典。在查字典之前,需要记录下当前书的页码,等查完字典后再回来继续读这本书。这样就是一个切换过程,这样会影响读书的效率的。

    总结:上下文切换是影响执行效率的。

    1.2  如何减少上下文切换

    1.2.1 无锁并发编程:多线程竞争锁,会引起上下文切换。所以无锁并发是减少上下文切换的一个好办法。比如在多线程处理数据时,可以将数据id按照Hash算法取模分段,不同的线程处理不同段的数据。Hash算法

    1.2.2 CAS算法:java并发包下的类进行数据更新,不需要加锁

    12.3 不使用线程

    1.3 资源限制的问题

    单机资源是有限的,可以考虑让程序在多个机器上运行,比如分布式环境;也可以使用连接池技术将资源复用。

    相关文章

      网友评论

        本文标题:并发编程之--上下文切换

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