线程和进程的区别: 一个进程内可以有多个线程,线程是比进程更小的单位
1、 进程是系统分配资源的基本单位,线程是CPU调度的基本单位,进程是程序的一次执行,线程是CPU调度的一次执行
2、进程之间是相互独立的,每个进程拥有自己的一块自身内存区域(进程间的通信是需要解决的问题),而多个线程之间是共享一块内存区域和一组资源的,有可能相互影响(因此会产生多个线程同时访问某一块数据的时候会导致数据不一致的问题,因此线程之间的同步是很重要的一件事情)
3、 线程基本上不拥有资源,只拥有一点在运行中必不可少的资源(寄存器,栈,程序计数器),所以线程的切换要比进程切换的负担小,但是它可与同一个进程的其他线程共享进程所拥有的全部资源
4、一个线程可以创建和撤消另一个线程,同一个进程中的多线程之间可以并发执行,但是线程是程序内部的顺序控制流,本身不能运行,它只能用于程序之中,使用分配给程序的内存资源和环境。
进程:执行中的程序(程序是静态的概念,进程是动态的概念)
多线程: 是指在单个程序中可以同时运行多个不同的线程,执行不同的任务。
多线程编程的目的: 就是最大限度的利用CPU资源,当某一线程的资源只需要I/O而不需要CPU资源的时候,可以先放弃CPU的占用让需要CPU资源的其他线程使用。
单线程: 当程序启动时,就会自动产生一个线程,主方法main就是在这个主线程上运行。
线程中的重点: 线程的生命周期,线程的实现,多线程的同步
多线程:一个程序实现多个代码同时交替运行就需要产生多个线程,
CPU随机的抽取时间,让我们的线程一会儿做这件事情,一会做另外一件事情
和其他语言不同,java内置支持多线程编程,每个线程都有独立的执行路径,因此多线程是多任务处理的一种特殊形式
多任务处理被所有的现代操作系统所支持,然而,多任务处理器有两种截然不同的类型:基于进程的和基于线程的
进程需要分配给独立的地址空间,进程间的通信是昂贵的受限的,进程间的转换也是很需要花费时间