线程和进程
进程 : 一个正在运行的程序,就是一个进程
线程 : 一个进程中 有多个线程(每一个线程相当于一个执行的任务)
主线程
多线程的程序 除了主线程以外 一般都叫子线程
一个程序只有一个主线程
main函数 就是一个线程 并且是主线程
主线程的执行步骤:
JVM调用main函数 –> CPU为main函数开辟一个执行路径 –>相当于在这个执行路径中 执行main函数中的代码
Thread线程类
(开辟一个主线程以外的线程 子线程)
1.创建一个Thread类的子类
2.重写run方法 run方法就是你要线程执行的代码
3.调用start方法 开启线程(不能重复开启)
第一种创建线程的方式 (继承Thread)
// 创建线程类对象
MyThread myThread = new MyThread();
// 开启线程
myThread.start();
//声明一个线程类 继承Thread
class MyThread extends Thread{
// 重写run方法
@Override
public void run() {
System.out.println("我是子线程");
}
}
第二种创建线程的方式 (实现Runnable接口)
// 创建接口的实现类的对象
Run run = new Run();
// 创建一个线程类对象
Thread thread = new Thread(run);
// 开启线程
thread.start();
// 创建一个类 实现Runnable接口
class Run implements Runnable{
@Override
public void run() {
System.out.println(Thread.currentThread().getName());
}
}
第三种创建线程的方式 (使用匿名内部类创建线程)
// 注意: 这种方式 new 后面跟的是父类名 但是创建出来的对象 却是子类或实现类的对象
Thread thread = new Thread(new Runnable() {
@Override
public void run() {
System.out.println("子线程的执行方法");
}
});
thread.start();
线程的状态(6种)
1.新建状态(new Thread)
2.运行状态(start())
3.死亡状态(run方法运行完毕)
4.受阻塞状态(CPU未执行该线程时)
5.休眠状态(sleep方法 休眠时间过了 恢复)
6.等待状态 (wait notify)