程序 -- 进程 -- 线程

> 程序(program)

程序    =    数据结构 + 算法(到后面会慢慢讲)

是为完成特定任务、用某种语言编写的一组指令的集合,即指一段静态的代码,静态对象。

> 进程(process)

是程序的一次执行过程,或是正在运行的一个程序。是一个动态的过程:有它自身的产生、存在和消亡的过程。——生命周期

1)如下:

2)程序是静态的,进程是动态的

3)进程作为资源分配的单位,系统在运行时会为每个进程分配不同的内存区域


并发:        

指两个或多个事件在同一时间段内发生

并行:

指两个或多个事件在同一时刻发生(同时发生)


> 线程(thread)

进程可进一步细化为线程,是一个程序内部的一条执行路径。

进程中负责程序执行的执行单元。一个进程中至少有一个线程。

线程调度:

        优先让优先级高的线程使用 CPU,如果线程的优先级相同,那么会随机选择一个(线程随机性),Java使用的为抢占式调度。

1)若一个进程同一时间并行执行多个线程,就是支持多线程的

> 多线程(multithreading)

2)线程作为调度和执行的单位,每个线程拥有独立的运行栈和程序计数器(pc),线程切换的开销小。

3)一个进程中的多个线程共享相同的内存单元/内存地址空间,它们从同一堆中分配对象,可以访问相同的变量和对象。这就使得线程间通信更简便、高效。但多个线程操作共享的系统资源可能就会带来安全的隐患。

> 线程池( thread pool )

线程池:基本思想还是一种对象池的思想,开辟一块内存空间,里面存放了众多(未死亡)的线程,池中线程执行调度由池管理器来处理。当有线程任务时,从池中取一个,执行完成后线程对象归池,这样可以避免反复创建线程对象所带来的性能开销,节省了系统的资源。


时间:    2019年12月3日14:00:58

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容