• 14-多线程1


    1.实现多线程

    1.1简单了解多线程【理解】

    是指从软件或者硬件上实现多个线程并发执行的技术。
    具有多线程能力的计算机因有硬件支持而能够在同一时间执行多个线程,提升性能。

    1.2并发和并行【理解】

    • 并行:在同一时刻,有多个指令在多个CPU上同时执行。

    • 并发:在同一时刻,有多个指令在单个CPU上交替执行。

    1.3进程和线程【理解】

    • 进程:是正在运行的程序(资源分配的基本单位)

      独立性:进程是一个能独立运行的基本单位,同时也是系统分配资源和调度的独立单位
      动态性:进程的实质是程序的一次执行过程,进程是动态产生,动态消亡的
      并发性:任何进程都可以同其他进程一起并发执行

    • 线程:是进程中的单个顺序控制流,是一条执行路径(调度的基本单位)

      ​ 单线程:一个进程如果只有一条执行路径,则称为单线程程序
      ​ 多线程:一个进程如果有多条执行路径,则称为多线程程序

    1.4实现多线程方式一:继承Thread类【应用】

    • 方法介绍

      方法名说明
      void run()在线程开启后,此方法将被调用执行
      void start()使此线程开始执行,Java虚拟机会调用run方法()
    • 实现步骤

      • 定义一个类MyThread继承Thread类
      • 在MyThread类中重写run()方法
      • 创建MyThread类的对象
      • 启动线程
    • 代码演示

    public class MyThread extends Thread{
        @Override
        public void run() {
            //线程开启后执行的代码
            for (int i = 1; i <= 100; i++) {
                System.out.println("线程开启了"+i);
            }
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    public class Test {
        public static void main(String[] args) {
            //创建一个线程对象
            MyThread t1 = new MyThread();
            //创建一个线程对象
            MyThread t2 = new MyThread();
    
            //开启一个线程
            t1.start();
            //开启一个线程
            t2.start();
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    运行结果:交替执行
    在这里插入图片描述

    两个小问题

    • 为什么要重写run()方法?

      因为run()是用来封装被线程执行的代码

    • run()方法和start()方法的区别?

      run():封装线程执行的代码,直接调用,相当于普通方法的调用(不会开启线程交替执行,而是顺序执行)

      start():启动线程、会交替执行;然后由JVM调用此线程的run()方法

  • 相关阅读:
    display详解
    Vite实现原理
    Kotlin - 返回结果 Result
    #机器学习--补充数学基础--线性代数
    Mysql 日志
    【c#-Nuget 包“在此源中不可用”】 Nuget package “Not available in this source“
    python_栈的应用:中缀表达式转换为后缀表达式
    ES6包管理机制以及模块化
    用平板当电脑副屏(spacedesk)双端分享
    小鹏汽车面试经验分享
  • 原文地址:https://blog.csdn.net/hza419763578/article/details/125910890