多线程讲解系列一

线程是指程序在执行过程中,能够执行程序代码的一个执行单元,在java语言中,线程有4种状态:运行,就绪,挂起和结束。

进程是指一段正在执行的程序,而线程有时也被称为轻量级进程,它是程序执行的最小单元,一个进程可以拥有多个线程,各个线程之间共享程序的内存空间(代码段,数据段和堆空间)及一些进程级的资源(列如打开的文件),但是各个线程拥有自己的栈空间,进程与线程的对比关系如图

在操作系统级别上,程序的执行都是以进程为单位的,而每个进程中通常都会有多个线程互不影响的并发执行,那么为什么要使用多线程了,其实,多线程的使用为程序研发带来了巨大的遍历,

(1)使用多线程可以减少程序的响应时间,在单线程(单线程指的是程序执行过程中只有一个有效操作的序列,不同操作之间都有明确的执行先后顺序)的情况下,如果某个操作很耗时,或者陷入长时间的等待(如等待网络响应),此时程序将不会响应鼠标和键盘等操作,使用多线程后,可以把这个耗时的线程分配到一个单独的线程去执行,从而使程序具备了更好的交互性。

(2)与进程相比,线程的创建和切换开销更小,由于启动一个新的线程必须给这个线程分配独立的地址空间,建立许多数据结构来维护线程代码段,数据段等信息,而运行于同一进程内的线程共享代码段,数据段,线程的启动或切换的开销比进程要少很多。同时多线程在数据共享方面效率非常高。

(3)多cpu或多核计算机本身就具有执行多线程能力,如果使用单个线程,将无法重复利用计算机资源,造成资源的巨大浪费,因此在多cpu计算机上使用多线程能提高cpu的利用率。

(4)使用多线程 能简化程序的结构,使程序便于理解和维护,一个非常复杂的进程可以分成多个线程来执行。

发布了41 篇原创文章 · 获赞 8 · 访问量 1283

猜你喜欢

转载自blog.csdn.net/sdgames/article/details/105032681