线程的基础-线程和进程、并行与并发

线程和进程的区别,简单理解就是电脑一个完整的任务就是一个进程,一个进程可有多可线程组成,多个线程都是这个任务的组成部分共享资源。

进程是程序在执行过程中的一个实例,它拥有独立的内存空间和系统资源,而线程是进程的一个执行单元,是进程内一个相对独立可调度的实体。程序是由指令和数据组成的,指令运行和数据读写,需将指令加载到CPU,数据加载至内存。指令在运行过程中需要使用到磁盘、网络等设备。进程就是来加载指令、管理内存、管理IO的。一个程序被运行,从磁盘加载这个程序的代码到内存,就开启一个进程。

一个进程之内可以分为一到多个线程。一个线程就是一个指令流,将指令流中的一条条指令以一定的顺序交给CPU执行。java中,线程作为最小的调度单位,进程作为资源分配的最小单位。在windows中进程是不活动的,只是作为线程的容器。线程上下文切换成本一般上要比进程上下文切换低。

总结起来,进程是操作系统分配资源的基本单位,而线程是进程内的执行单元。进程之间相互独立,线程之间共享资源。线程切换开销小,稳定性较差。进程切换开销大,稳定性较好。(由于线程共享进程资源,一个线程崩溃可能导致整个进程的崩溃。进程之间相互独立,进程的崩溃不会影响其他进程)多线程编程中,线程的使用可以提高程序的并发性和响应性。

并行和并发的区别,并发就是单核CPU不断切换线程,并行就是多核CPU的不同核执行不同的线程。

对于单核CPU下线程实际上还是串行执行的。操作系统中有一个组件叫做任务调度器,将cpu的时间片分给不同的程序使用,只是cpu在时间片之间的切换非常快,感觉就是同时运行的,这种线程轮流使用CPU的做法成为并发。而多核CPU每个核都可以调度运行线程,线程是可以并行的。

你可能感兴趣的:(理论知识,线程)