概念
进程和线程
- 程序:一段静态的代码
- 进程:程序的一次执行过程,或内存中正在运行的应用程序。进程为操作系统调度和分配资源的最小单位。
- 线程:进程细化为线程,一个进程同时执行多个线程即多线程。
CPU调度和执行的最小单位
启动一个spring(java)程序,即JVM实例,即进程,进程中同时处理多个线程任务,即多线程(CPU核心数)。
运行时内存中
方法区和堆是线程共享的
虚拟机栈、本地方法栈、程序计数器是线程隔离的(每个线程有一份)
线程调度
- 分时调度
- 抢占式调度
串行、并行和并发
- 串行:一个接一个
- 并行:同时间多个,3个CPU做3件事(不涉及抢占CPU)
- 并发:A、B、C线程,1CPU,轮换交替执行ABC(抢占CPU)
java线程
继承Thread
@AllArgsConstructor class AThread extends Thread { @Override public void run() { try { sleep(1000); } catch (InterruptedException e) { throw new RuntimeException(e); } System.out.println("写自己的线程实现"); } }
1
2
3
4
5
6
7
8
9
10
11
12
- 实现Runnable
- ```java
class BThread implements Runnable {
@Override
public void run() {
System.out.println("写自己的线程实现");
}
}
1 | public static void main(String[] args) { |
如果aThread直接调研run方法,只是main方法主线程调用了一个方法,并不是多线程。
一个线程不能在执行start多次
Thread类方法
- 构造器
- public Thread(); 新线程
- public Thread(String name); 指定名字新线程
- public Thread(Runnable target); 指定目标对象的新线程
- public Thread(Runnable target, String name); 指定目标对象的新线程,并指定线程名
线程方法
- start、stop
- run
- wait、sleep