Java中进程和线程的区别

    我们先来描述一下什么是进程:狭义定义:进程就是一段程序的执行过程。  广义定义:进程是一个具有一定独立功能的程序关于某个数据集合的一次运行活动。它是操作系统动态执行的基本单元,在传统的操作系统中,进程既是基本的分配单元,也是基本的执行单元。

  通过编写特殊的代码把多个CPU核心都利用起来这样的代码就称为“并发编程”,多进程编程就是一种典型的并发编程,虽然进程和以解决许多的问题,但是随着对效率要求越来越高,就希望有更好的方式来实现并发编程。

  多进程编程最大的问题就是进程"太重"。

  创建进程/销毁进程开销比较大(时间,空间)

  一旦需要频繁的创建和销毁进程,开销就非常明显了。为了解决进程开销比较大的问题发明了"线程"(Thread),线程可以理解为更轻量的进程,也能解决并发编程的问题,但是创建和销毁的开销比进程低,因此多线程编程就成为了当下主流的并发编程方式。

所谓进程在系统中是通过PCB这样的结构体来描述的,通过链表的形式来组织的~~

简单来说:以个进程就是一组PCB,一个线程就是一个PCB其中存在了一个包含关系。

 因此一个进程中可以包含多个进程(此时每个线程都可以独立的到CPU上调度执行)

 注意:线程是系统“电镀执行”的基本单位,进程是系统“资源分配的基本单位”。

  例如:一个可执行程序,运行时操作系统就会常见进程,给这个程序分配各种系统资源(CPU,内存硬盘,网络带宽)同时也会在这个进程中,创建一个或者多个线程,这些线程再去CPU上调度执行。

   线程比进程更轻量,主要就在于创建线程,省去了“分配资源”过程,销毁线程也省去了“释放资源”的过程。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

熬到半夜敲代码

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值