首页 > 其他分享 >继承Thread类创建多线程

继承Thread类创建多线程

时间:2023-01-12 13:34:29浏览次数:42  
标签:run Thread 单线程 创建 MyThread 多线程 方法


之前我们学习了多线程,今天来说Java程序中如何实现多线程,Java提供了两种多线程实现方法,今天就来说说第一种继承Thread类创建多线程,另一种方法请看下篇!

在学习多线程之前,先来看看我们所熟悉的单线程程序,如图所示:

继承Thread类创建多线程_多线程

运行结果:

继承Thread类创建多线程_程序员_02

从运行结果可以看出,程序一直打印的是“MyThread类的run()方法在运行”,这是因为该程序是一个单线程程序,当调用MyThread类的run()方法时,遇到死循环,循环会一直进行。因此,MyThread类的打印语言将永远执行,而main()方法中的打印语句无法得到执行。

如果希望图1中两个while循环中的打印语句能够并发执行,就需要实现多线程。为此JDK提供了一个线程类Thread,通过继承Thread类中,并重写Thread类中的run()方法便可实现多线程。在Thread类中,提供了一个start()方法用于启动新线程,线程启动后,系统会自动调用run()方法。接下来通过一个案例来演示如何通过继承Thread类的方式来实现多线程,如图所示:

继承Thread类创建多线程_编程语言_03

运行结果:

继承Thread类创建多线程_多线程_04

从运行结果可以看出,两个while循环中的打印语句轮流执行了,说明该例程实现了多线程。为了使大家更好地理解单线程和多线程的执行过程,接下来通过一个图例分析一下单线程和多线程的运行流程。如图所示:

继承Thread类创建多线程_IT_05

从图可以看出,单线程的程序在运行时,会按照代码的调用顺序进行执行。而在多线程中,main()方法和MyThread类的run()方法却可以同时运行,互不影响,这正是单线程与多线程的区别。


标签:run,Thread,单线程,创建,MyThread,多线程,方法
From: https://blog.51cto.com/u_8238263/6004047

相关文章

  • C++ 使用 new 创建二维数组
    C++使用new创建二维数组最直接的方法就是 ​​newT[M][N]​​​。返回的指针类型是 ​​T(*)[N]​​​,它是指向数组的指针,可以直接使用数组下标形式访问元素。释放内......
  • 线程池使用ExecutorService 多线程处理队列任务
    最近转到银行工作,在做最核心的财务账务部分,对我来说是一个比较新的东西,工作也已经四年有余,接触一些新的东西,也是不错,每天也累得像狗...不说了。/捂脸接下来说一种非常实用的......
  • JavaScript中数组的概念以及创建
     先给大家分享一些JavaScript的相关资料: ​​认识JavaScript到初体验​​​​JavaScript注释以及输入输出语句​​​​JavaScript变量的使用、语法扩展、命名规范​​​......
  • NET-async-await是否会创建新线程
    title:.NETasync/await是否会创建新线程date:2022-12-0610:36:46tags:-.NET先上结论CPU密集型操作,比如计算,如果不使用Task,ThreadPool、Thread,则不会创建新线程......
  • uni-app创建项目
     文件-新建-1.项目 ......
  • strapi系列-如何创建一个定时任务-Cron Jobs
    Cron是什么?Cron有多种用途。CronJobs用于安排服务器上的任务运行。它们最常用于自动化系统管理或维护。然而,它们也与Web应用程序的构建相关。Web应用程序可能需......
  • C++ 使用 new 创建二维数组
    1.直接创建C++使用new创建二维数组最直接的方法就是newT[M][N]。返回的指针类型是T(*)[N],它是指向数组的指针,可以直接使用数组下标形式访问元素。释放内存直接使......
  • JUC源码学习笔记5——1.5w字和你一起刨析线程池ThreadPoolExecutor源码,全网最细doge
    源码基于JDK8文章1.5w字,非常硬核系列文章目录和关于我一丶从多鱼外卖开始话说,王多鱼给好友胖子钱让其投资,希望亏得血本无归。胖子开了一个外卖店卖国宴,主打高端,外卖......
  • pandas——pandas的数据结构与创建数据对象
    1.pandas的数据结构Seriesseries是一维数据importpandasaspds=pd.Series([1,2,3,4,5])print(s.index)#获取series的索引print(s.values)#获取series的值D......
  • Ambari安装Hive启动时报无法创建虚拟机
    [root@hdp03hive]#cathive-server2.errError:VMoption'UseG1GC'isexperimentalandmustbeenabledvia-XX:+UnlockExperimentalVMOptions.Error:Couldnotcrea......