1 package day11.lesson1.p1; 2 3 /* 4 1 实现多线程 5 6 1.1 进程和线程 7 8 进程 9 是正在运行的程序 10 是系统进行资源分配和调用的独立单位 11 每一个进程都有它自己的内存空间和系统资源 12 线程 13 是进程中的单个顺序控制流,是一条执行路径 14 单线程:一个进程如果只有一条执行路径,则称为单线程程序 15 多线程:一个进程如果有多条执行路径,则称为多线程程序 16 17 1.2 实现多线程方式1:继承Thread类 18 19 方法 20 void run() 在线程开启后,此方法将被调用执行 21 void start() 使此线程开始执行,Java虚拟机会调用run方法() 22 23 步骤 24 定义一个类MyThread继承Thread类 25 在MyThread类中重写run()方法 26 创建MyThread类的对象 27 启动线程 28 29 为什么要重写run()方法? 30 因为run()是用来封装被线程执行的代码 31 run()方法和start()方法的区别? 32 run():封装线程执行的代码,直接调用,相当于普通方法的调用 33 start():启动线程;然后由JVM调用此线程的run()方法 34 */ 35 public class MyThreadDemo { 36 public static void main(String[] args) { 37 MyThread mt1 = new MyThread(); 38 MyThread mt2 = new MyThread(); 39 40 // mt1.run(); 41 // mt2.run(); 42 //打印0-99 0-99 43 //直接调用run()并不会启动多线程 44 45 mt1.start(); 46 mt2.start(); 47 //0-99 0-99 混杂打印 48 //调用start启动多线程 49 } 50 }
1 package day11.lesson1.p1; 2 3 public class MyThread extends Thread{ 4 5 @Override 6 public void run() { 7 // super.run(); 8 for (int i=0; i<100; i++){ 9 System.out.println(i); 10 } 11 } 12 13 }