是指从软件或者硬件上实现多个线程并发执行的技术。
具有多线程能力的计算机因有硬件支持而能够在同一时间执行多个线程,提升性能。
并行:在同一时刻,有多个指令在多个CPU上同时执行。
并发:在同一时刻,有多个指令在单个CPU上交替执行。
进程:是正在运行的程序(资源分配的基本单位)
独立性:进程是一个能独立运行的基本单位,同时也是系统分配资源和调度的独立单位
动态性:进程的实质是程序的一次执行过程,进程是动态产生,动态消亡的
并发性:任何进程都可以同其他进程一起并发执行
线程:是进程中的单个顺序控制流,是一条执行路径(调度的基本单位)
单线程:一个进程如果只有一条执行路径,则称为单线程程序
多线程:一个进程如果有多条执行路径,则称为多线程程序
方法介绍
| 方法名 | 说明 |
|---|---|
| void run() | 在线程开启后,此方法将被调用执行 |
| void start() | 使此线程开始执行,Java虚拟机会调用run方法() |
实现步骤
代码演示
public class MyThread extends Thread{
@Override
public void run() {
//线程开启后执行的代码
for (int i = 1; i <= 100; i++) {
System.out.println("线程开启了"+i);
}
}
}
public class Test {
public static void main(String[] args) {
//创建一个线程对象
MyThread t1 = new MyThread();
//创建一个线程对象
MyThread t2 = new MyThread();
//开启一个线程
t1.start();
//开启一个线程
t2.start();
}
}
运行结果:交替执行

为什么要重写run()方法?
因为run()是用来封装被线程执行的代码
run()方法和start()方法的区别?
run():封装线程执行的代码,直接调用,相当于普通方法的调用(不会开启线程交替执行,而是顺序执行)
start():启动线程、会交替执行;然后由JVM调用此线程的run()方法