计算机java进程线程,Java并发编程--进程与线程

进程:百度百科说“进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。”,维基百科说“是计算机中已运行程序的实体。进程本身不会运行,是线程的容器。”

线程:百度百科说“线程,有时被称为轻量级进程(Lightweight Process,LWP),是程序执行流的最小单元”,维基百科说“是操作系统能够进行运算调度的最小单位。它被包涵在进程之中,是进程中的实际运作单位。”。

在弄清楚这些名词前,我们先看看是如何产生的。

在计算机刚诞生时,计算机只能接受一些特定的指令并执行,当用户输入指令时,计算机只能等待,这样效率很低,然后人们开始想,是不是可以把指令写一个清单,交给计算机去执行,如此,有了批处理操作系统;但是这时人们又发现了一个问题,比如当一个程序需要耗时较长的I/O操作时,cpu只能等待其读完数据,这样效率无疑也是比较低的。再然后人们又开始想,是不是当一个程序等待资源时是不是可以让另一个程序运行,待之前的程序资源准备完毕时再让其运行,相当于是内存中不仅仅只运行一个程序?进程产生了,用进程来对应一个程序,每个进程对应一定的内存地址空间,且只能用自己的,各个进程不互相干扰,同时,进程保存了程序每个时刻的运行状态,这样进程间就可以切换了。这样用户用起来感觉像是计算机同一时间在执行多个任务,称之为“并发”。说明:对于单核cpu来说,事实上一个时间只有一个进程占用cpu。

再然后,人们对计算机的实时性要求更高了,虽然可以执行多个进程了,但是执行一个进程时,一个进程一个时间段内只能做一件事情,那么可不可以再把进程切分成多个子任务,并发执行呢?于是人们又发明了线程,通过线程之间的切换,让用户感觉系统同时在做很多件事情。

进程让操作系统的并发性成为可能,线程让进程内部并发成为可能。

现在再看上面的解释,进程是系统资源分配和调度的基本单位,每个进程都独享自己的资源;一个进程可以包括多个线程,而线程是系统运算调度的最小单位,所以进程内部的多个线程是共享进程的资源的。

当然,上面的解释都要和物理设备相关,比如,cpu是单核的还是多核的等。

下面看一张资源监视器的图:

59fd91ba80347012786eb2337e845d71.png

通过这张图可以很直观的看出,一个eclipse进程包含多个线程。进程和线程不是一个量级的对象,所以个人认为没有必要放在一起比较,和类和对象的关系比较类似。

0b1331709591d260c1c78e86d0c51c18.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值