多线程
目录
1.进程
1.1.进程的了解
- 简单的来说进程就是运行中的程序,简称为进程。
- 单核CPU在任意一个时间节点上,只能运行一个线程。
- windows10上通过 快捷键 ctrl+shift+esc组合按键调出任务管理器
能查出目前正在使用的进程,与后台挂载的进程
win10中通过在cmd中输入wmic打开命令窗口
并输入 cpu get NumberOfCores查询自己电脑核数
简单理解一核一个线程
上图所示 4代表我的电脑核数 4核说明能同时执行四个进程
注意:单核的宏观并行,微观串行
2.线程
2.1.什么是线程
- 轻量级的进程
- 程序中的一个顺序控制流程,也是CPU的基本调度单位
- 同时也是CPU的基本调度单位,进程由多个线程组成,彼此间完成不同的工作,交替执行,称为多线程。
- JVM虚拟机是一个进程,默认包含主线程(Main函数),可通过代码创建多个线程与main并发执行
2.2.线程的组成
任何一个线程都具有基本的组成部分:
- CPU时间片:操作系统(OS)会为每个线程分配执行时间。
- 运行数据:
1. 堆空间:存储线程需使用的对象。多个线程可以共享堆内存
2. 栈空间:存储线程需要使用的局部变量,每个线程都拥有独立的栈
2.3.线程的创建
- 方式1:
1. 通过继承Thread类
2. 重写run方法
3. 子类对象调用start()
public class TestThread{
public static void main(String[] args){
// 3.创建线程
Thread th = new ThreadOne();
// 4.调用线程
th.start();
}
}
// 线程类 1.继承Thread类
class ThreadOne extends Thread{
// 2.重写run方法
@Override
public void run(){
// 这里是线程要执行的内容
}
}
- 方式2:
1. 实现Runnable接口
2. 重写run方法
3. new一个实现接口的类对象
4. 创建线程对象
5. 调用start()
public class TestThread{
public static void main(String[] args){
// 3.创建任务
ThreadOne one = new ThreadOne();
// 4.创建线程
Thread th = new Thread(one);
// 5.调用线程
th.start();
}
}
// 线程类 1.继承Thread类
class ThreadOne implements Runnable{
// 2.实现run方法
@Override
public void run(){
// 这里是线程要执行的内容
}
}
- 其他方式这里不做详细的解释列出
2.4.线程的状态
- 初始状态 New
- 就绪状态 Ready
- 运行状态 Running
- 终止状态 Terminated
- 阻塞状态 Blocked
- 限期等待 Timed Waiting
- 无限期等待Waiting
JDK 1.5之后就绪状态与运行状态统称Runnable