多线程的优点意义


进程和线程都是由操作系统所体现的程序运行的基本单元,系统利用该基本单元实现系统对应用的并发性。

       在操作系统中可以有多个进程,一个进程中又可以有一个或多个线程。进程是在自己独立的内存空间中运行的,所以进程与进程之间是不共享内存的。线程是把进程给分割开,每个线程之间可以共享系统分配给这个进程的内存空间。线程之间不仅可以共享进程的内存,而且还拥有一个属于自己的内存空间,这段内存空间叫做线程栈。是在建立线程时由系统分配的,主要用来保存线程内部所使用的数据。


线程调度

       是在一个线程空闲时会撤下这个线程,并且会让其他线程来执行的方式。


多线程带来的意义。也就是多线程给我们带来了那些好处:

一、充分利用CPU资源。

       因为我们的电脑都是只有一个CPU,所以充分利用CPU资源显得尤为重要。当执行单线程程序时,在程序发生阻塞的时候CPU可能处于空闲状态,这样就造成了计算机资源的浪费。而当使用多线程的时候可以在一个线程发生阻塞并且CPU处于空闲的时候,可以运行其他线程,这样CPU很难有空闲的时候了,因此CPU资源就得到了充分利用。

二、简化编程模式

       如果程序只完成一项任务,那样我们只要写一个单线程的程序,并且按照这个任务的执行步骤编写代码就可以了。但是当程序需要完成多项任务时,如果使用单线程的话,那就得在程序中判断每项任务是否应该执行以及在什么时候执行。如果使用多线程的话,让每一个线程处理一个单独的任务,可以只针对这个单独的任务进行编程,这样有利于开发人员对程序的理解。就是把一个大的东西分成一个一个的小东西进行处理。

三、简化异步事件处理

       什么是异步?什么是同步?我说一下自己的理解

       同步可以理解成   假设有两个线程,这两个线程是相关的,一个线程发生阻塞等待另一个线程。或者可以说你给其他人发送了一个指令,只有等待着这个指令返回相应结果后才去执行下一条指令。

       异步可以理解成   假设有两个线程,这两个线程是没有关系的,各玩各的。或者可以说你给他人发送了一条指令,不用管结果什么时候返回来 ,我先去忙其他的去了,等结果返回来了在执行下一条命令。下面通过一个例子说明一下如何简化异步事件处理的。

       当一个服务器应用程序在接收不同的客户端连接时最简单的处理方法就是位每一个客户端连接建立一个线程。然后监听线程仍然负责监听来自客户端的请求。如果这种请用程序采用单线程来处理,当监听线程接受到一个客户端请求后,开始读取客户端请求了,在读完数据后,read()方法处于阻塞状态了,也就是说,这个线程无法在监听客户端的请求了。而要想在单线程中处理多个客户端的请求,就必须使用非阻塞的Socket连接和异步I/O。但使用异步I/O方式比使用同步I/O更难以控制,也容易出错。因此使用多线程和同步I/O可以更容易的处理类似于多请求的异步事件。

四、使GUI更有效率

       在使用单线程处理GUI事件时,必须使用循环来对随时有可能发生的事件进行扫描,但是在循环内部除了扫描GUI事件外还得执行其他程序代码,如果代码太长耗时太久,就会造成GUI事件被冻结,直到这些代码被执行完为止。

       在当前我们使用的GUI框架中都使用了一个单独的事件分派线程(EDT )来对GUI事件进行扫描,当点击事件函数会在这个事件分派线程中被调用,由于EDT的任务只是对GUI事件进行扫描,因此,这种方式对事件的反应非常快。

五、提高计算机的执行效率

      在计算机中提高程序的执行效率有三种方法:一、是增加计算机的CPU个数。二、是为一个程序启动多个进程。三、是在程序中使用多线程。因为CPU的昂贵,所以第一种不好。又因为每一个进程都是在独立的内存空间中运行,并且内存不共享,数据不共享,所以启动多进程会消耗大量系统资源,第二种不好。第三种继承了他们的优点,弥补了他们的缺点,并且多线程可以模拟多块CPU的运行方式,因此多线程是提高程序执行效率的最廉价方式。

 

 

 

  • 6
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值