2、多线程的优势和缺陷

概述

由于单线程本身的缺陷,目前绝大多数系统采用多线程的方式运行。虽然多线程提高了系统资源利用率,但同时也给系统带来了线程安全性问题。本篇就多线程的优势和缺陷系统的整理一下,在以后的开发过程中,根据不同的业务场景使用不同的线程模型,以达到更好的效果。


多线程的优势和缺陷

本篇就多线程的优势和缺陷分以下四个模块展开:

  1. 单线程应用的缺陷
  2. 多线程的优势
  3. 多线程的缺陷
  4. 常见的使用单/多线程的场景

1、单线程的缺陷

单线程应用顾名思义:整个系统的运行围绕一个线程来展开。

首先最容易想到的问题是线程异常终止:因为只有一个线程的原因,如果该线程阻塞或停止,整个系统都可能产生卡死等无法正常服务的情况

其次,单线程应用的UI交互很差:当我们点击按钮,触发某个事件之后,在事件处理过程中,整个按钮可能处于“被点击”状态,这种状态下用户不能进行任何其他操作。即使我们通过一些手段让按钮回弹,但用户再次点击按钮将不会收到任何响应,甚至有可能产生意料之外的错误。

最重要的一点是,单线程应用几乎不能对多用户服务。在单线程应用为某个用户服务期间,其他用户发来的所有请求将会被忽略,这种情况导致的结果是:绝大多数情况下,绝大多数用户的请求不会被处理,这对于一款软件来说是完全没有用户体验而言的。


2、多线程的优势

多线程应用常见的优势无外乎以下几点:

  1. 系统资源利用率高
  2. 用户交互性高
  3. 极少数情况下开发更简单

2-1、系统资源利用率高

通常情况下,一个线程从头到尾的执行不仅仅需要CPU调度,大多数情况下还需要进行必要的 I/O 操作。在执行 I/O 操作期间,线程阻塞。

CPU操作通常情况下极快,而 I/O 操作相比CPU操作慢了数百倍,因此绝大多数情况下,CPU都处于等待 I/O 操作期间。因此在等待 I/O 操作期间,可以让CPU先执行其他线程,提高系统资源的利用率。

假设现在需要处理文件A和文件B,读取文件A需要5s,处理文件A需要2s,读取文件B需要5s,处理文件B需要4s,下面我们分别以单线程模型和多线程模型做简单分析:

单线程模型

Created with Raphaël 2.2.0 开始 读取文件A(耗时5s) 处理文件A(耗时2s)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值