进程
进程是处于运行过程中的程序,具有独立的功能,是系统进行资源分配和调度的独立单位
独立性
进程是系统中独立存在的实体,它拥有自己独立的资源,每一个进程都拥有自己私有的地址空间,在没有经过进程本身允许的情况下,一个进程不能直接访问其他进程的地址空间;(音乐播放应用程序不能访问QQ浏览器的内存)
动态性
进程是一个正在系统中活动的指令集合,包含了时间的概念,具有自己的生命周期和状态;
并发性
在当个处理器上,多个进程可以并发地执行,并且在执行时它们彼此之间不会相互影响
并发和并行的区别
并行
在同一时刻,有多条指令在多个处理器上同时执行;
并发
- 多个进程的指令可以被快速地轮换执行,使得宏观 上具有多个进程同时执行的效果。
- 对于多核计算机,当进程数多于核心数时,也会存在并发的行为!
线程
- 线程扩展了进程的概念,使得同一个进程可以同时并发处理多个任务;
- 线程是进程的组成部分,一个进程可以拥有多个线程,一个线程必须有一个父进程
- 线程不拥有系统资源,它与父进程里的其他线程共享父进程所拥有的全部系统资源
- 系统可以执行多个任务,每个任务就是进程;
- 进程可以同时执行多个任务,每个任务就是线程。
线程的优点
- 容易共享内存
- 进程之间不能共享内存,但线程之间共享内存非常容易;因为与分隔的进程相比,线程之间的隔离程度要小,它们共享内存、文件句柄、其他每个进程应有的状态
- 运行效率高
- 系统创建进程时要为其分配系统资源,但创建线程时不需要,所以线程的运行效率更高;
- 编程方式简单
- Java内置了多线程功能的支持,并不是简单地对操作系统地底层进行调度,编程更方便。