什么是线程?它与进程有什么区别?为什么要使用多线程

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u013274055/article/details/53700432
    线程是指程序在执行过程中,能够执行程序代码的一个执行单元。在Java语言中,线程有四种状态:运行、就绪、挂起和结束。
    进程是指一段在执行的程序。而线程有时也被称为轻量级进程,各个线程之间共享程序的内存空间(代码段、数据段和堆空间)及一些进程的内存空间(例如打开的文件),但是各个线程拥有自己的栈空间,进程与线程的对比关系如下图。

    在操作系统级别上,程序的执行都是以进程为单位,而每一个进程中通常都会有多个线程线程互不影响地并发执行,那么为什么要使用多线程呢?其实,多线程的使用为程序研发带来了巨大的便利,具体而言,有以下几方面的内容:
    (1)使用多线程可以减少程序的响应时间。在单线程(单线程指的是程序执行过程中只有一个有效操作的序列,不同操作之间都有明确的执行先后顺序)的情况下,如果某个程序很耗时或者陷入长时间等待(如等待网络响应),此时程序将不会相应鼠标和键盘等操作,使用多线程后,可以把这个耗时的线程分配到一个单独的线程去执行,从而是程序具备了更好的交互性。
    (2)与进程相比,线程的创建和切换开销更小。由于启动一个新的线程必须给这个线程分配独立的地址空间,建立许多数据结构来维护线程代码段、数据段等信息,而运行于同一个进程内的线程共享代码段、数据段,线程的启动或切换的开销就比进程要少很多。同时多线程在数据共享方面效率非常高。
    (3)多CPU或多核心计算机本身就具有执行多线程的能力,如果使用单个线程,将无法重复利用计算机资源,造成资源的巨大浪费。因此在多CPU计算机上使用多线程能提高CPU的利用率。
    (4)使用多线程能简化程序的结构,使用程序便于理解和维护。一个非常复杂的进程可以分成多个线程来执行。
阅读更多
换一批

没有更多推荐了,返回首页