接着上节课的内容,我们继续讲解多线程
,那么上次课我们把这个线程的基本概念给大家解释清楚了
,那么基于了解了线程的概念的基础之上
,我们这次课进一步的就要用编码来具体地讲解
,如何去实现线程的创建以及线程的启动
,Java当中
,我们是通过Thread类来代表线程的
,所有的线程对象
,必须是这个类以及这个类的子类的实例对象
,所以说在这个基础之上
,我们在Java当中创建线程
,具体的有三种方式
,接下来我们就对这三种方式
,一种一种的给大家讲解它的创建步骤
,以及我们实战的演练
,第一种方式是通过继承Thread类来创建线程
,具体的步骤分成三个
,第一个步骤就是我们定义一个Thread类的子类
,并且重写Thread类当中的run方法
,这个方法非常关键
,这个方法里边的内容实际上就代表着这一个线程
,我们新定义的创建出来的这个线程
,它要完成的线程的任务
,所以说我们经常把run方法称之为线程执行体
,这是第一个步骤
,第二个步骤就是我们创建出了定义出了这个Thread类的子类
,那么我们要创建一个线程
,也就是创建这个子类的实例对象
,你每new出来一个实例对象
,也就意味着你创建出了一条子线程
,你new出了两个实例对象
,也就意味着你创建出了两条子线程
,注意是子线程
,因为我们的这个程序它默认有一条主线程
,那个不是我们
,那个不是我们
,我们通过代码创建的
,它是JVM自动就会根据这个进程
,
它会默认地创建的
,那么第三个步骤就是我们创建出来的实例对象
,调用它的start方法
,你就可以启动这条线程
,启动这条线程
,那么就会执行这个线程里边,你定义在执行体run方法里边的那些
,那些任务,那些工作
,好吧,那么这里边是这样的三个步骤
,了解清楚以后
,我们具体的来通过这个代码来编写一下
,好吧
,然后这里边
,这里边说几句题外话
,前面的课程我们用的是STS,本质就是Eclipse
,但是网上有些同学说现在IDEA越来越流行
,希望老师在这边用一下IDEA这个工具
,但是我这边虽然说我满足同学们提出这个意见
,我后面课程可以用IDEA来讲
,但是我这边说几句题外话
,也就是说我个人不希望同学们去迷信工具
,我们学习Java,实际上不管是用Eclipse
,还是用STS还是用IDEA
,我们写的东西是一模一样的
,学的东西和写的东西本质是一个东西
,没得区别
,所以说这里边使用的工具不一样
,也就不过是我们编程的时候
,我们的这个编写的界面和运行的环境有点区别而已
,所以说不建议大家去迷信工具
,我觉得这个工具就看我们工作室公司里边
,大家用什么你就用什么
,整个公司用STS我们就用STS
,整个公司用的Eclipse,那我们就用Eclipse
,整个公司里边用的IDEA,那我们就跟着用IDEA好了
,所以说我不建议大家过度的迷信工具
,这里边不要说人云亦云,人家说IDEA版的这个Java
,Eclipse版的Java,这个扯淡
,不管你用什么工具写的Java都是一样的
,
这点大家
,这是我第一个个人的建议
,第二个问题就是
,第二个问题就是有同学说
,建议出一套IDEA这种工具使用的这种视频
,我觉得没必要
,那么为什么这样说
,我就说STS Eclipse
,我玩了十几年的STS Eclipse
,但是这个工具里边是不是所有的这些功能我都门儿清
,扯淡
,老实说我只会,只熟悉我经常用的一些功能
,那么其中很多的一些功能,我可能一辈子都没用过
,每个工具它的这个功能相当的齐全和复杂
,并不是说这个工具里面所有东西我们都得门儿清
,没那个必要,也没那个意义
,我们只需要我们需要用到这个功能的时候
,你会用就ok
,因为毕竟就是个工具而已
,所以说在这里边有没有必要对这个工具
,每一个功能细细地去讲一遍
,细细地去学一遍
,有必要吗
,我个人觉得没必要
,那么我们对工具来讲
,我们只需要会用它我们需要的部分就够了
,那么这一部分怎么来的
,你直接安装好了
,直接运行起来,直接去用它
,然后哪个部分不会
,百度哪个部分
,这就是我自己用这个工具也是如此
,比如说我这边我创建一个Java项目
,我用这个工具
,我这边不知道怎么创建,百度一下
,我用IDEA创建Maven项目
,不会,百度一下
,我这边用IDEA创建Spring Boot的项目
,不会,百度一下
,你需要哪个东西你去查哪个东西
,然后查了以后你就把它记住
,就这么简单
,你们慢慢用着用着也就熟悉了
,所以说熟悉了以后也就那样了
,没必要对这个工具
,花太多的这个精力专门去研究它
,
我个人觉得没必要
,所以说这里边再具体去讲解后边的这个东西
,说几句题外话
,好吧那么在这里边
,我们IDEA创建一个新的project
,然后这里边Java
,然后这里边next
,然后取个名
,这是我们有关线程的演示项目
,所以说我就叫做ThreadDemo
,ThreadDemo
,然后
,然后finish
,finish完了以后
,IDEA跟我们以前用的Eclipse还是有点区别
,还是有些区别
,首先这里边,project里边
,我们IDEA里边它是建一个project
,然后project里边你可以直接写代码
,可以
,但也可以在这个项目里边来建立一个个的子模块
,那么在Eclipse里边
,每一个子模块我们都是新建一个工程
,但这里边IDEA里边子模块它是有一个Module
,所以这里边我们创建一个Module
,我们在子模块里面写代码
,这样子感觉要更加符合我们这个工程
,我这边这次课的例子我就第一个子模块
,第二次课的例子我就写在第二个子模块里边
,所以说这样子这个代码更加的不容易混淆
,所以说是这样的一个东西
,好吧,那这里边next
,然后子模块的名字
,这是线程的第一个子模块,我就叫做ThreadFirst
,第一个子模块Module
,Module
,这样子玩
,ThreadFirstModule
,好的,然后finish
,然后在这个Module里边看到没有
,都有这个src,我们src里边一般就写源码呗
,在这边新建一个class类
,那么新建一个class类
,我们在IDEA里边
,它的这个包是这样子建
,cn.ybzy.demo
,看到没有,这是包名
,
然后后面是我的类名
,ThreadTest
,这样子玩
,好吧那这里边
,ok
,好,然后这里边是这样子的
,看见没有包
,然后类
,这样的一个结构
,好吧,然后在这里边
,我们就具体写我们的Java代码
,写Java代码呢
,我们要写的东西是我们创建线程的第一种方式
,我们通过实现Thread类的子类来创建线程
,所以说我们首先就在下边搞一个子类
,class
,当然你可以直接在这儿直接新建另一个类
,那我这边把两个类就放在一块了
,那么
,这个类是我们的第一个
,这个线程
,所以说我就叫做FirstThread
,Thread,好
,继承extends
,extends什么呢
,Thread
,看到没有
,继承Thread
,好,这是这个
,这样子就第一个步骤
,我们创建定义一个子类
,让这个子类它去继承Thread这个父类
,然后重写父类当中的run方法
,run方法是我们这个线程的执行体
,好吧
,重写,在IDEA里边
,快捷键是alt+insert
,然后这边Override Methods
,重写run方法
,这样子run方法就重写了
,重写,然后在run方法里边
,就是我们的线程的执行体
,线程的执行体
,线程执行体说白了,我们就是这个线程所代表的
,任务
,这个此线程
,此线程
,预实现的
,实现的任务
,代码
,就放在这个run方法里边
,就是说我们这个例子
,
第一个定义这个子线程的类的这个例子
,这里边我干什么呢
,这里边我就玩一个
,循环,for循环
,int i=0
,然后i小于
,