java多线程:1、线程和进程的区别?并行(异步)和并发(同步)的区别?守护线程是什么?

1、线程和进程的区别?

(1)根本区别
进程是资源分配的单位;
线程是调度和执行的单位。

(2)开销
进程切换开销较大。每个进程都有独立的代码和数据空间。
线程切换开销较小。线程可以看做轻量级的进程,同一类线程共享代码和数据空间,每个线程有其独立的运行栈。

(3)所处环境
进程:在操作系统中能同时运行多个任务(程序)。
线程:统一应用程序中有多个顺序流同时执行。

(4)内存分配
进程:系统在运行的过程会为每个进程分配不同的内存区域。
线程:线程所使用的资源是它所属的进程的资源,线程组只能共享资源。

(5)包含关系
只有一条线程的进程可以看做单线程的。如果一个进程拥有多个线程,那么执行过程就不是一条线,而是多个线程共同进行的。
进程是线程的容器,线程是进程的一部分,可以说线程是轻量级的进程。

2、并行(异步)和并发(同步)的区别?

我的理解是并发和并行是形容在面对多个任务时的处理:

假如说现在你在切菜,老妈叫你接个电话。

(1)(交替做不同的事情)如果你停止切菜,去接电话,接电话完毕之后再回来继续切菜。这就是并发。
(2)(同时做不同的事情)如果你边切菜边接电话,同时进行。这就是并行。

也就是说,同步是交替做事,异步是同时做事。

3、守护线程是什么?

(1)守护线程是当主线程运行的时候,守护线程一起运行。当主线程销毁的时候,守护线程一起销毁。例如GC。如下为守护线程的设置方法。

// 标识当前方法为守护线程,一定要在启动线程前设置为守护线程
thread.setDaemon(true);
thread.start();

(2)非守护线程在主线程结束之后依旧继续运行,与主线程互不影响。

发布了57 篇原创文章 · 获赞 13 · 访问量 1099

猜你喜欢

转载自blog.csdn.net/weixin_42924812/article/details/105209740