zoukankan      html  css  js  c++  java
  • 软件设计中的同步异步单线程多线程优缺点分析

    同步还是异步,单线程还是多线程是我们软件开发中经常面临的设计选择,只有准确的区分它们之间的优缺点,才能根据我们的实际应用场景作出正确选择。它们两两组合一共有四种模式,下面就我自己的理解做一些总结分析。

     1、同步单线程模式

    优点:a)实现简单。b)不用考虑线程间同步互斥问题。

    缺点:a)对CPU的使用率不高(容易在进行IO操作或自身等待操作时阻塞),在多CPU时劣势更明显。b)并发性不好,在有的事件需要长时间占用CPU处理的情况下,其他事件会长时间等待得不到处理。

     2、同步多线程模式

    优点:a)对CPU的使用率较高,在多CPU时优势更明显。b)并发性好,各线程都能根据优先级得到执行。

    缺点:a)需要考虑线程间同步互斥问题。b)实现较复杂,不同线程的业务步骤有相互依赖时,需要分解实现成状态机及事件通知驱动模式(或者轮询模式)。

     3、异步多线程模式

    优点:a)对CPU的使用率高,在多CPU时优势更明显。b)并发性好,各线程都能根据优先级得到执行。

    缺点:a)需要考虑线程间同步互斥问题。b)实现复杂,要把所有会导致阻塞的操作转化为异步操作,另外不同线程的业务步骤有相互依赖时,需要分解实现成状态机及事件通知驱动模式(或者轮询模式)。

     4、异步单线程模式

    优点:a)对CPU的使用率高。b)不用考虑线程间同步互斥问题。

    缺点:a)实现较复杂,要把所有会导致阻塞的操作转化为异步操作。b)并发性不好,在有的事件需要长时间占用CPU处理的情况下,其他事件会长时间等待得不到处理。c)在多CPU时不如多线程高效。

    简单的说:同步实现简单但是CPU利用率低,异步实现复杂但是CPU利用率高。

    单线程不用考虑互斥但是并发性、多CPU利用率低,多线程需要考虑互斥但是并发性、多CPU利用率高。

  • 相关阅读:
    springboot启动时不加载数据库
    ElasticSearch常用的查询操作
    Windows10 搭建ElasticSearch集群服务
    windows10安装ElasticSearch7.5遇到两个警告解决方法
    MybatisPlus自动生成代码配置
    初识RabbitMQ ------基本概念
    深拷贝与浅拷贝的区别
    Java8中 LocalDateTime与Date互相转换
    Spring中常用的工具类StringUtils、DateUtils、CollectionUtils等
    SpringBoot定时任务 @Scheduled cron 表达式说明
  • 原文地址:https://www.cnblogs.com/james1207/p/3304020.html
Copyright © 2011-2022 走看看