进程与线程的不解之缘


进程与线程的不解之缘

一、java中main方法启动的是一个进程还是一个线程:

答:是一个线程也是一个进程

解释:
一个java程序启动后它就是一个进程,进程相当于一个空盒,它只提供资源装载的空间
,具体的调度并不是由进程来完成的,而是由线程来完成的。
一个java程序从main开始之后,进程启动,为整个程序提供各种资源,而此时将启动一个线程,这个线程就是主线程,它将调度资源。
进行具体的操作。Thread、Runnable的开启的线程是主线程下的子线程,是父子关系,
此时该java程序即为多线程的,这些线程共同进行资源的调度和执行。


二、进程概念:

  1. 【正在运行的程序】 在执行过程中分配和管理资源的基本单位。
  2. 各个进程之间互不影响,因为系统给它们分配了不同的空间和资源。他又分为单进程和多进程。

三、线程概念:

是进程的一个【执行单位】 ,比进程更小的、独立运行的基本单位,线程又称【轻量级进程】 , 它分为单线程和多线程。


四、进程和线程的区别:

(1)地址空间比较:

同一进程内的线程共享本进程的地址空间,而进程之间的资源说独立的。

(2)资源拥比较有:

同一进程内的线程共享本进程的资源,而进程之间的资源说独立的。

(3)多进程与多线程的健壮性比较:

一个进程崩溃后,在保护模式下不会对其他进程造成影响,但一个线程崩溃,整个进程都死掉,
所以多进程要比多线程健壮。

(4)进程和线程切换开销比较:

【进程切换】:消耗的资源大于【线程切换】:
【进程切换】:涉及到虚拟地址空间的切换而【线程切换】:则不会。因为每个进程都有自己的虚拟地址空间,
而线程是共享所在进程的虚拟地址空间的,因此同一个进程中的线程进行线程切换时不涉及虚拟地址空间的转换。
(如:涉及共享某些变量的并发操作时,只能用多线程)


五、线程与进程的关系:

该进程内的线程共享了该进程的【上下文环境】


六、进程与线程的优缺点:

  1. 线程执行开销小,但是不利于资源的管理和保护。线程适合在SMP机器(双CPU系统)上运行。
  2. 进程执行开销大,但是能够很好的进行资源管理和保护。进程可以跨机器前移。

猜你喜欢

转载自blog.csdn.net/weixin_38316697/article/details/108365145