简介
- 多线程,是指从软件或者硬件上实现多个线程并发执行的技术
- 进程:是正在运行的程序
线程:是进程中的单个顺序控制流,是一条执行路径
单线程:一个进程如果只有一条执行路径,则称为单线程程序
多线程:一个进程如果有多条执行路径,则称为多线程程序 - 多线程通过开分支栈来实现多个线程同时进行
- 一般以继承Thread类或实现Runnable接口来启动多线程
继承Thread类
-
Thread类的两个方法
void run() //在线程开启后,此方法将被调用执行 void start() //使此线程开始执行,Java虚拟机会调用run方法()
-
步骤
- 定义一个类MyThread继承Thread类
- 在MyThread类中重写run()方法
- 创建MyThread类的对象
- 启动线程
-
示例
public class MyThread extends Thread { @Override public void run() { for(int i=0; i<100; i++) { System.out.println("Thread->"i); } } } public class MyThreadDemo { public static void main(String[] args) { MyThread my = new MyThread(); my.start(); //start()方法启动线程;然后由JVM调用此线程的run()方法 for(int i=0; i<100; i++) { //根据CPU的调度,run()方法和for会自行交替执行,没有明显规律 System.out.println("main->"i); } } }
-
弊端
- 继承Thread类的子类不能再继承其他的类,无法扩展其功能
- 所以我们更多的是使用Runnable接口,毕竟接口支持多继承
实现Runnable接口
-
相关的Thread构造方法
Thread(Runnable target) //分配一个新的Thread对象 Thread(Runnable target, String name) //分配一个新的Thread对象
-
步骤
- 定义一个类MyRunnable实现Runnable接口
- 在MyRunnable类中重写run()方法
- 创建MyRunnable类的对象
- 创建Thread类的对象,把MyRunnable对象作为构造方法的参数
- 启动线程
-
示例
public class MyRunnable implements Runnable { @Override public void run() { for(int i=0; i<100; i++) { System.out.println(Thread.currentThread().getName()+":"+i); } } } public class MyRunnableDemo { public static void main(String[] args) { MyRunnable my = new MyRunnable(); Thread t1 = new Thread(my); // //创建Thread类的对象,把MyRunnable对象作为构造方法的参数 my.start(); for(int i=0; i<100; i++) { System.out.println("main->"i); } } }