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

并发编程的挑战

作者: 圣村的希望 | 来源:发表于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