Thread 是 线的意思
    image.png
    // 注:控制台输出的是: 两个线程会交叉跑,不会让一个线程单独跑完
    image.png
    // 注:主线程的任务不要放在子线程之前,这样主线程,单独跑完,不会管子线程了 (这个for不要放上面)先创建线程对象,然后调用start方法
    image.png
    image.png

    1. package com.itheima.d1_create;
    2. /**
    3. * 目标: 多线程的创建方式一: 继承Thread类实现。
    4. */
    5. public class ThreadDemo1 {
    6. public static void main(String[] args) { // 一般main方法启动是由主线程启动它的
    7. // 3. new一个新线程对象
    8. Thread t = new MyThread(); // 这是一种完美的多态写法
    9. // 4. 调用start方法启动线程(执行的还是run方法)
    10. // 不能直接调用run方法,会被当成普通run方法使用,最后还是单线程
    11. t.start(); // 子线程启动
    12. //
    13. // 两个线程都在跑,代表实现了多线程
    14. for (int i = 0; i < 5; i++) { // 每次都在跑,先后顺序不一样
    15. // 子线程和主线程都会执行不分先后,可能先执行一下子线程,后执行主线程
    16. System.out.println("主线程执行输出:" + i);
    17. }
    18. }
    19. }
    20. /**
    21. * 1. 定义一个线程类必须要继承Thread类
    22. * Thread 是线程的意思
    23. */
    24. class MyThread extends Thread{ // 面向对象的特点,一旦继承的其他类,就不能在继承别的类了
    25. /**
    26. * 2 .重写run方法,里面是定义先出以后要干什么
    27. */
    28. @Override
    29. public void run() {
    30. for (int i = 0; i < 5; i++) {
    31. System.out.println("子线程执行输出:" + i); // 除了主线程,其他的叫子线程
    32. }
    33. }
    34. }