Java并发编程之概念三:进程与线程

widow系统/任务管理器中的进程与线程关系

 

关系总结:一个应用程序可以同时启动多个进程,一个进程可以同时并发运行多个线程。

进程是指一个内存中运行的应用程序

进程的概念主要有两点:第一,进程是一个实体。每一个进程都有它自己的地址空间,一般情况下,包括文本区域(text region)、数据区域(data region)和堆栈(stack region)。文本区域存储处理器执行的代码;数据区域存储变量和进程执行期间使用的动态分配的内存;堆栈区域存储着活动过程调用的指令和本地变量。第二,进程是一个“运行的应用程序”。程序是一个没有生命的实体,只有处理器赋予程序生命时,它才能成为一个活动的实体,我们称其为进程,简单理解就是让执行的代码(程序定义:程序是指令和数据的有序集合)跑起来之后就是一个进程。 

如果一个应用程序需要执行的任务非常多,例如LOL游戏,光是需要播放的音乐就有非常多,人物本身的语音,技能的音效,游戏的背景音乐,塔攻击的声音等等等,还不用说游戏本身,就光播放音乐就需要创建许多许多的进程,而进程本身是一种非常消耗资源的东西,这样的设计显然是不合理的。更何况大多数的操作系统都不需要一个进程访问其他进程的内存空间。也就是说,进程之间的通信很不方便,此时我们就得引入“线程”这门技术,来解决这个问题。

线程是指进程中的一个执行任务(控制单元)

当然一个进程中至少有一个线程,不然没有存在的意义。线程可以利用进程所拥有的资源,在引入线程的操作系统中,通常都是把进程作为分配资源的基本单位,而把线程作为独立运行和独立调度的基本单位,由于线程比进程更小,基本上不拥有系统资源,故对它的调度所付出的开销就会小得多,能更高效的提高系统多个程序间并发执行的程度。

进程和线程的区别:

进程:有独立的内存空间,进程中的数据存放空间(堆空间和栈空间)是独立的,至少有一个线程。

线程:堆空间是共享的,栈空间是独立的,线程消耗的资源也比进程小,相互之间可以影响的,又称为轻型进程或进程元。

因为一个进程中的多个线程是并发运行的,那么从微观角度上考虑也是有先后顺序的,那么哪个线程执行完全取决于CPU调度器(JVM来调度),程序员是控制不了的。我们可以把多线程并发性看作是多个线程在瞬间抢CPU资源,谁抢到资源谁就运行,这也造就了多线程的随机性。

---------------------
作者:hughjin
来源:CSDN
原文:https://blog.csdn.net/baidu_25310663/article/details/88072140
版权声明:本文为博主原创文章,转载请附上博文链接!

猜你喜欢

转载自www.cnblogs.com/hughjin/p/10582475.html