> 程序(program)
程序 = 数据结构 + 算法(到后面会慢慢讲)
是为完成特定任务、用某种语言编写的一组指令的集合,即指一段静态的代码,静态对象。
> 进程(process)
是程序的一次执行过程,或是正在运行的一个程序。是一个动态的过程:有它自身的产生、存在和消亡的过程。——生命周期
1)如下:
2)程序是静态的,进程是动态的
3)进程作为资源分配的单位,系统在运行时会为每个进程分配不同的内存区域
并发:
指两个或多个事件在同一时间段内发生
并行:
指两个或多个事件在同一时刻发生(同时发生)
> 线程(thread)
进程可进一步细化为线程,是一个程序内部的一条执行路径。
进程中负责程序执行的执行单元。一个进程中至少有一个线程。
线程调度:
优先让优先级高的线程使用 CPU,如果线程的优先级相同,那么会随机选择一个(线程随机性),Java使用的为抢占式调度。
1)若一个进程同一时间并行执行多个线程,就是支持多线程的
> 多线程(multithreading)
2)线程作为调度和执行的单位,每个线程拥有独立的运行栈和程序计数器(pc),线程切换的开销小。
3)一个进程中的多个线程共享相同的内存单元/内存地址空间,它们从同一堆中分配对象,可以访问相同的变量和对象。这就使得线程间通信更简便、高效。但多个线程操作共享的系统资源可能就会带来安全的隐患。
> 线程池( thread pool )
线程池:基本思想还是一种对象池的思想,开辟一块内存空间,里面存放了众多(未死亡)的线程,池中线程执行调度由池管理器来处理。当有线程任务时,从池中取一个,执行完成后线程对象归池,这样可以避免反复创建线程对象所带来的性能开销,节省了系统的资源。
时间: 2019年12月3日14:00:58