进程与线程(Java多线程总结一)

来源:互联网 发布:我知道远程监控的域名 编辑:程序博客网 时间:2024/06/05 19:03

一、并发执行

①在操作系统中,是指一个时间段中有几个程序都处于已启动运行到运行完毕之间,且这几个程序都是在同一个处理机上运行,但任一个时刻点上只有一个程序在处理机上运行。

如我们在使用计算机时,可以一边听歌,一边玩游戏。这种多个程序块同时运行的现象被称作并发执行。

②但并发和并行是不同的两个概念。并发是指一个时间段内同时运行,这是个区间;而并行是指在同一个时间点上运行,这个是一个点。而且并发在同一个时间点上只能是一个程序在运行。也就是说每一个点只能运行一个程序。

④操作系统会为每一个进程分配一段有限的CPU使用时间,CPU在这段时间中执行某个进程,然后会在下一段时间切换到另一个进程中去执行。由于CPU运行速度很快,能在极短时间内在不同的进程之间进行切换,所以给人以同时实行很多程序的感觉。

⑤单核cpu系统永远不可能实现并行,cpu只能是异步的分配给进程更进一步的说应该是线程。多核cpu的话就有可能实现并行了,既同一个时间点运行两个进程


二、进程
①Windows系统下我们打开任务管理器,点击“进程”,就会出现一个表格,表格的每一行都是一个进程,比如说QQ.exe,google chrome.exe等; 通俗的说法就是每打开一个应用程序,如QQ、谷歌浏览器,系统就打开了一个进程。系统为这个进程分配相关的资源,比如cpu、内存。

②进程是一个实体。每一个进程都有它自己的地址空间,一般情况下,包括文本区域(text region)、数据区域(data region)和堆栈(stack region)。文本区域存储处理器执行的代码;数据区域存储变量和进程执行期间使用的动态分配的内存;堆栈区域存储着活动过程调用的指令和本地变量。

③进程是一个“执行中的程序”。程序是一个没有生命的实体,只有处理器赋予程序生命时,它才能成为一个活动的实体。


三、线程

①线程是进程中的一个实体,是被系统独立调度和分派的基本单位,线程自己不拥有系统资源,只拥有一点在运行中必不可少的资源,但它可与同属一个进程的其它线程共享进程所拥有的全部资源。

②当一个Java程序启动时,就会产生一个进程,该进程会默认创建一个线程,在这个线程上会运行main()方法中的代码。

③通常在一个进程中可以包含若干个线程,它们可以利用进程所拥有的资源。在引入线程的操作系统中,通常都是把进程作为分配资源的基本单位,而把线程作为独 立运行和独立调度的基本单位。由于线程比进程更小,基本上不拥有系统资源,故对它的调度所付出的开销就会小得多,能更高效的提高系统内多个程序间并发执行 的程度,从而显著提高系统资源的利用率和吞吐量。


四、线程和进程的区别

线程和进程的区别是,不同的进程有不同的代码和数据空间,而多个线程可以共享数据空间,每个线程有自己的执行堆栈和程序计数器为其执行上下文.多线程主要是为了节约CPU时间,发挥利用,根据具体情况而定. 线程的运行中需要使用计算机的内存资源和CPU。


五、多线程技术的优点

如果是一个单线程的程序,这个程序需要连续运行几个功能,如果正在运行的那个功能因指令需要停下,CPU就出现空闲在,等这个程序重新继续运行。

如果使用多线程技术,那么可以把这几个功能同时(并不是绝对意义上的同时)运行,当其中一个功能停时下,可以先让其他功能运行,这个可以花更短的时间完成整个任务。

原创粉丝点击