进程线程多线程概念详解
Posted chaojizhengui
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了进程线程多线程概念详解相关的知识,希望对你有一定的参考价值。
序言
最近觉得自己对线程一块的理解非常混沌,于是回头将线程的知识从头开始梳理。
当前进的路上遇到瓶颈时,停下来整理回顾自己过去所做的,所学的,或许能够让你豁然开朗。
下面讨论的都是基于单核处理器。
进程是什么?
进程是程序运行实例,是程序向操作系统申请资源(例如内存空间)的基本单位。
打开Windows操作系统的任务管理器,点击进程菜单可以看到目前系统存在的所有进程。
例如一个正在运行的word文档就是一个进程。正常进程的一生会经历从代码加载,代码执行
到代码执行完毕的一个完整过程。这个过程也是进程本身从产生,执行到最终消亡的过程。
如果还是觉得不好理解的话举一个和Java有关的例子——控制台打印HelloWord:
public class HelloWorld public static void main(String[] args) System.out.println("Hello world.");
当运行(点击Run As Java Application)这段代码的时候,就会产生一个进程,先加载编译代码,
然后执行任务打印Hello world,执行完成之后消亡。
操作系统中可以有很多的进程,但是同一时刻,只有一个进程运行。并且进程产生之后并不一定
能够立刻执行,运行需要分配到处理器资源(这一块是进程调度有关的概念,不清楚可以去大概了解一下)。
线程是什么?
线程是进程中最小的可执行单位。线程是在进程的基础上进行的进一步划分,一个进程可以只有一个线程,
也可以包含多个线程。例如在使用Word的时候,假设打字是一个线程,线程的任务就是打字,如果出现了拼写
错误,则Word会在出错的单词下面划出红线。那么实际上每启动一个World操作系统就是创建了一个进程,而
这个进程又有许多其他的程序在运行(例如拼写检查),这些程序就是一个个线程。如果Word关闭了,则这些
拼写检查的线程就会消失。反之,拼写检查消失,并不一定会然Word进程消失。
为什么要使用多线程?
还是Word的打字的例子,平时使用Word,在出现拼写错误的时候,几乎同时拼写错误提示就显示出来。
因为打字是当前Word进程的一个线程,拼写检查也是。并且当我们在打字的时候,拼写检查也在“同时”运行,
这样的优点就在于可以很快的知道出现了拼写错误,及时处理。倘若在文档都已经写好,再进行拼写检查,
对于用户来说会是非常糟糕的使用体验。这就时多线程的优势之一——提高系统的响应性。
优势:
1.提高系统的吞吐量。举例:一个网站可以接受并处理多个请求。
2.提高系统的响应性。举例:在下载文件的同时可以去做其他操作,而不会出现一定要下载完成才可以去做的情况。
3.最小化系统资源使用。多个线程可以共享进程的资源。
多个线程真的是同时运行吗?
答案是否定的——不是。在进程得到系统分配的处理器资源之后,进程中的调度程序选择哪一个程序来运行,
进程中同一时刻只能有一个线程运行。只是系统处理的速度非常的快,在视觉上感觉是同时运行的。
总结:
技术学习基础最重要,理解概念,是能否掌握多线程编程的关键。
本想对进程调度和线程调度进行一个说明,但是对这部分内容只是一知半解。
这个时候就会非常希望自己在大学的时候有好好学《计算机操作系统》这门课。
在计算机专业,进程调度和线程调度算是基础了。
造化弄人,偷过的懒,全都要还。共勉。
以上是关于进程线程多线程概念详解的主要内容,如果未能解决你的问题,请参考以下文章