Java多线程-------进程、线程基本概念
什么是进程?
顾名思义:正在进行(运行)的程序,是程序进行资源分配的基本单位
目前操作系统都是支持多进程,可以同时执行多个进程,通过ID对进程进行区分,PID:process ID
单核CPU在同一时刻,只能运行一个进程;宏观上看是并行、微观看是串行
什么是线程?
线程,又称轻量级进程。进程中的一条执行路径,也是CPU的基本调度单位。一个进程由一个或多个线程组成,彼此间完成不同的工作,同时执行,称为多线程
可以查看本机的线程
举个例子: 迅雷是一个进程,当中的多个下载任务即是多个线程
Java虚拟机是一个进程,当中默认包含主线程(main),可通过代码创建多个独立的线程,与main并发执行
进程 和 线程的区别
1、进程是操作系统资源分配的基本单位,而线程是CPU的基本调度单位
2、一个程序运行后至少有一个进程
3、一个进程可以包含多个线程大,但是至少需要有一个线程,否则这个进程是没有意义的
4、进程间不能共享数据段地址,但同进程的线程之间可以
线程的组成部分
CPU时间片:操作系统会为每个线程分配执行时间
运行数据:(区分哪个是共享的,哪个是独立的)
- 堆空间:存储线程需要使用的对象,多个线程可以共享堆中的对象
- 栈空间:存储线程需要使用的局部变量,每个线程都拥有独立的栈
线程的特点:
1、线程抢占式执行
- 效率高
- 可防止单一线程长时间独占CPU
由于每个线程都分配了时间片,所以不存在线程会一直在CPU执行