美文网首页
并发编程的挑战

并发编程的挑战

作者: 圣村的希望 | 来源:发表于2018-04-01 18:20 被阅读0次

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

    2、引起线程上下文切换的原因

        a、当前线程cpu时间片消耗完

        b、资源竞争没有获取到资源,例如线程没有获取锁时,线程挂起

        c、当前线程发生io阻塞,线程挂起,cpu调度下一个线程

        d、当前线程出让cpu,线程调用yield方法

    3、避免线程上下文切换的措施

        a、无锁编程,使用cas代替锁的使用

        b、使用最少线程

    4、并发编程的挑战:

        a、线程上下文的切换

        b、死锁

        c、硬件和软件资源的限制

    5、死锁引发的根本原因:资源的不足,导致在对资源使用的时候发生竞争

        5.1、如何编写死锁程序

            两个资源A、B,启动两个线程t1、t2,同时去获取两个资源,但是两者获取的顺序相反,因此在这个时候会发生资源的竞争,导致彼此互相等待死锁

        5.2、解决死锁的思路

            两个资源要么都获取,要不都不获取

    6、资源限制:是指程序的执行速度受限于计算机的硬件和软件的资源。硬件资源有:带宽、磁盘的读写速度和cpu的处理速度;软件资源有:数据库的连接数和socket连接数。

        6.1、资源限制的解决思路

                硬件:对于硬件资源的限制的话只能是加机器,使用集群的方式来解决问题

                软件:对于软件资源的限制的话可以使用连接池的方式

    相关文章

      网友评论

          本文标题:并发编程的挑战

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