【JAVA】多线程篇章之进程与线程的区别与联系【面试热问题】

开门见山,先总结一下

1.进程包含线程(包含关系)

2.线程比进程更轻量化,创建和销毁也比进程快(线程是轻量化进程)

3.进程中的多个线程之间共用一份内存/文件资源,而进程与进程之间则是独立调用内存/文件资源(资源调用)

4.进程是资源分配的基本单位,线程是调度执行的基本单位


一个进程中默认有一个线程,也可以有多个线程,因为进程的创建一般都要分配资源来进行调度,如果使用多进程,工作效率会低,比不上使用多线程的效率高,举一个例子

一个大工厂里有一套流水线机器,工厂=进程,流水线=线程,这时为了提高工厂的效率,有以下解决方案

方案1.多建一家工厂,并增加一套流水线,此时有两个工厂,两套流水线,效率是提高了,但是有缺点:创建工厂不仅要找场地,还需要建厂资金,加大了成本

【JAVA】多线程篇章之进程与线程的区别与联系【面试热问题】_第1张图片

方案2.我们只需要在原来的厂子里多添加一套流水线,效率也同样会大大提高,这样节约了成本

【JAVA】多线程篇章之进程与线程的区别与联系【面试热问题】_第2张图片

所以从上述例子就可以明确的知道了多线程比多进程的优势大


注:

1.多线程的创建不是无限的,线程的创建也消耗资源

2.多线程中会有线程不安全问题,其中线程的“抢占式执行”是万恶之源

3.多线程中,某个线程出现问题也会影响到其他线程

4.多线程的使用是“并发执行”,“并发执行”=并行+并发 

5.大数据计算用多线程效率会比串行执行效率高,但是当计算小数据时,由于线程的创建也需要时间,所以小数据计算串行执行效率会比并发执行效率高

你可能感兴趣的:(java,面试,jvm)