线程、进程的关系

本文探讨了进程与线程的概念,对比它们的创建、销毁和调度成本,重点介绍了线程在Java中的实现,如Thread类的使用。还揭示了进程和线程间的内存管理以及注意事项,如线程数过多可能导致的调度开销和异常传播问题。
摘要由CSDN通过智能技术生成

一、由来

引入进程的目的就是为了能够“并发编程”,虽然多进程已经能够解决并发的问题了,但是我们认为还不够理想。创建进程/销毁进程/调度进程,开销有点大。创建进程就需要分配资源,销毁进程就需要释放资源。如果频繁创建销毁,这样的开销就比较大,于是就引出了“线程(Thread)”.线程在有些系统上也叫“轻量级进程”

轻量:

创建线程比创建进程更有效,创建线程,并没有去申请资源

销毁线程比销毁进程更有效,销毁进程,也不需要释放资源,让线程产生在进程内部,共用之前的资源

调度线程比调度进程更有效

进程和线程之间是包含关系,一个进程可以包含一个线程或者多个线程。先把进程创建出来之后,这个时候,相当于资源都分配好了,然后再这个进程里面创建线程,这样的线程和之前的进程共用一样的资源了。

其实在操作系统内核的角度,不分“线程还是进程的”,只认PCB,当创建一个进程的时候,就是创建了一个PCB出来,同时这个PCB也可以视为是当前进程中已经包含了一个线程了(一个进程中至少有一个线程),属于同一个进程的线程之间,是可以共用一份内存空间,同时其他的进程(PCB)使用的是独立的内存空间。

不是线程数目越多越好,如果线程数目太多,线程之间就会更频繁进行调度,调度的开销就无法忽略了。一个进程里面如果某个线程抛出了异常,并且没有合理catch住的话,可能就会导致整个进程都异常退出,其他线程也完了。

线程和代码的关系:一个线程就是代码中的一个执行流

执行流:按照一定的顺序来执行一组指令

进程和线程之间的区别和联系:

1、进程是包含线程的,一个进程可以包含一个线程或者多个线程。

2、每个进程都有独立的内存空间(虚拟地址空间),同一个线程的多个进程之间,共用这个虚拟地址空间

3、进程是操作系统资源分配的基本单位,线程是操作系统调度执行的基本单位

使用java来操作线程

在java中,使用Thread这个类的对象来表示一个操作系统中的线程

PCB是在操作系统内核中,描述线程的

Thread类是在java代码中描述线程的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值