您的位置:首页 > 编程语言 > Java开发

读李宁老师的-Java多线程初学者指南(1):线程简介

2009-08-13 00:48 253 查看
写读书笔记的目的是为了方便的向大家请教。

李宁老师的这篇文章首先介绍了“线程”与“进程”,但这毕竟是个抽象的词语,我们要理解其背后的含义。换句话说:什么是进程,什么是线程。我在网上找到一个定义:进程是指在系统中正在运行的一个应用程序;线程是系统分配处理器时间资源的基本单元,或者说进程之内独立执行的一个单元。我想先理解第一句话“进程是指在系统中正在运行的一个应用程序”,我想这句话的意思是:进程代表的是一个运行中的应用程序。然后理解第二句话:“线程是系统分配处理器时间资源的基本单元,或者说进程之内独立执行的一个单元”,是否可以这样理解:线程只是度量系统资源的单位。仍然是很模糊的。

为什么会有这些概念?网上有这样的说法“进程是为了提高CPU的执行效率,减少因为程序等待带来的CPU空转以及其他计算机软硬件资源的浪费而提出来的”对于这个说法,我觉得和其定义:“进程是指在系统中正在运行的一个应用程序”逻辑上无关。似乎无逻辑上的关系。关于线程,网上同样有说法:“线程是进程的一部分,一个没有线程的进程是可以被看作单线程的”

下面说说我的想法:计算机做运算,必然是要消耗资源。操作系统就好比一个管家,来支配这些资源。应用程序肯定是要在操作系统上运行,我们肯定希望运行的效率越高越好。所以,操作系统就把资源打包好,并且用线程这个概念来度量。如果一个应用程序只需要一个线程就可以搞定。那么就是单线程的。如果一个应用程序用一个线程无法搞定。就必须引入进程的概念。而这个进程中包括 N 个线程。N决定于应用程序。换句话说,线程是有固定“大小”的。进程是一些线程的集合。

继续看:李老师说使用多线程可以节约成本,提高程序效率。对于这一点,我不是很理解。程序的本质都是运算。CPU的计算能力是个定值,如果做一个运算。用单线程,需要N时间。如果用多线程。因为只有一块CPU,而且线程之间切换肯定是需要时间的,这么看时间还要比N时间要大?

hehe
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: