本文已参与「新人创作礼」活动,一起开启掘金创作之路。
进程 VS 线程
- 进程: 是指一个内存中运行的应用程序,一个应用程序可以同时运行多个进程。
- 线程: 是进程中的一个执行单元,负责当前进程中程序的执行,一个进程至少有一个线程,一个进程可以有多个线程。
简言之: 一个程序运行后至少有一个进程,一个进程可以包含多个线程。
并发 VS 并行
并发:指两个或多个事件同一时间段内发生(单核CPU上多任务之间的切换); 并行:指两个或多个事件同一时刻发生(同时执行,多核CPU多任务并行执行);
注意: 单核处理器的计算机肯定是不能并行的处理多个任务的,只能是多个任务在单个CPU上并发运行。
线程调度
- 分时调度
所有线程轮流使用CPU的使用权,平均分配每个线程占用CPU的时间。
- 抢占式调度
优先让优先级高的线程使用CPU,如果线程的优先级相同,那么会随机选择一个(线程随机性),Java使用的是抢占式调度。 - 设置线程的优先级
线程的执行顺序

创建线程的两类四种方式:
- 无返回值(重写run方法,void)
- 继承Thread类方式
- 实现Runnable接口方式
- 有返回值(实现call方法,Objec)
- Callable和Future
- FutureTask
PS:通过线程池创建多线程
方式一: 继承Thread类
# MyThread 类
public class MyThread extends Thread {
// 1. 继承Thread并重写run方法
@Override
public void run() {
for (int i = 0; i < 10; i++) {
System.out.println("run" + i);
}
}
}
# main
public static void main(String[] args) {
// 2. 创建Thread或者Thread子类对象
MyThread mythread = new MyThread();
// 3.调用Thread类中的start方法,开启新线程,执行run方法