回答问题:

什么是进程?什么是程序?有什么区别
程序:数据与指令的集合,程序是静态的
进程:给程序加入了时间的概念,是动态的,代表OS中正在运行的程序
进程是动态的,就代表OS中正在运行的程序
独立性 动态性 并发性

什么是并行?什么是串行?什么是并发?
CPU:电脑的核心处理器,类似于“大脑”
串行:是指同一时刻一个CPU只能处理一件事,类似于单车道
并行:相对来说资源比较充足,多个CPU可以同时处理不同的多件事,类似于多车道
并发:相对来说资源比较紧缺,多个进程同时抢占公共资源,比如多个进程抢占一个CPU

什么是线程?线程和进程有什么关系?
线程是OS能够进行运算跳读的最小单位
一个进程可以拥有多个线程,也可以拥有一个线程
只有一个线程的叫单线程

CPU:电脑的核心处理器

线程有几种状态?它们是怎么转换的?

  1. 1.新建状态:new–申请PCB,进行资源的分配<br /> 2.就绪/可运行状态:万事俱备只欠CPU,其实是将创建好的线程对象加入到就绪队列中,等待OS选中,这个选择我们是控制不了的<br /> 3.执行/运行状态:就绪队列中的线程被OS选中了,正在执行<br /> 注意:只有就绪状态才能切换成执行状态<br /> 4. 阻塞状态:线程在执行中遇到了问题:<br /> 锁阻塞、休眠阻塞、等待阻塞…问题解决后再加入到就绪队列中<br /> 5.终止状态:线程成功执行完毕,释放资源<br />![image.png](https://cdn.nlark.com/yuque/0/2021/png/244644/1640173639026-a3b279df-4672-41d0-bc58-70bb5fa5e101.png#clientId=ue3c76aef-1a31-4&crop=0&crop=0&crop=1&crop=1&from=paste&id=u66e45f9d&margin=%5Bobject%20Object%5D&name=image.png&originHeight=424&originWidth=854&originalType=url&ratio=1&rotation=0&showTitle=false&size=139300&status=done&style=none&taskId=uc7482b94-db76-4d58-8447-1d2657c0ef7&title=)<br />[

](https://blog.csdn.net/weixin_43884234/article/details/122070107)

多线程实现方案总结:

多线程实现的方案一:继承Thread

1.定义自己的多线程类TicketThread,并且继承Thread
2.重写父类的run(),里面是我们自己的业务
3.创建多个自定义线程类对象
4.通过线程对象.start()将线程加入到就绪队列中
5.查看多线程抢占资源的效果

  1. 构造方法摘要
  2. Thread() 创建一个新的线程对象,名字是系统自定义的
  3. Thread(String name) 与上面功能一致,还可以自定义线程名
  4. 可以通过调用父类Thread的含参构造Thread(String name)
  5. 给自定义线程对象起名字,调用方式:super(name);

多线程实现的方案二:实现Runnable

1.定义自己的业务类,并且实现接口Runnable
2.在业务类中添加接口里的抽象方法run(),并实现业务
3.创建唯一的业务类对象
4.创建多个Thread类的对象,作为多个线程对象
并将刚刚的业务对象传入
5.使用多个线程类对象调用start(),将线程加入到就绪队列之中
6.查看多线程抢占资源的效果

  1. 构造方法摘要
  2. Thread(Runnable target) 创建一个线程对象,参数为Runnable实现类的对象
  3. Thread(Runnable target, String name) 与上面功能一致,还可以自定义线程名