Hello! 大家好。(非常平庸的开场白 习惯一下)。此篇博客是我的“处女作”,因为是第一次写博客,在文章格式以及文章内容可能会有许多问题和缺陷。欢迎各位大神对我的文章进行指正!我定积极采纳与听取各位宝贵的建议,不断优化文章!
正文部分:
开门见山。本文主要讲解JavaEe中关于进程和线程的基本概念 及 多线程程序创建的三种常见方式。因本人在课程前部 和 中后部 观看了不同的教学视频。故理论概念的讲述较为浅,倾向于介绍三种创建方式。
目录
在了解线程和线程之前 我们需要了解 并发 和 并行 这两个概念。这两个概念将贯彻整个多线程的学习。当你被多线程的运作原理困扰时,及时回忆,有利于更好的学习与理解多线程。
并发:指的是两个或多个事件在同一时间段内发生
并行:指的是两个或多个事件在同一时刻同时发生
了解完这两个概念,就正式进入线程与进程的介绍之中:
介绍完线程和进程,就顺带讲解一下在多线程之中,关于线程的调度模式。对于线程的调度,主要有两种模式:
简单了解完进程和线程的相关基础知识后,我相信观看博客的各位同志还有着以下两大疑问:
什么是多线程?如何创建多线程代码?
什么是多线程???
public class HelloWorld {
public static void main(String[] var0) {
System.out.println("Hello,World!");
}
}
此时我们可以看到 此程序中只有一个main方法(main线程),所执行的任务就是进行输出打印(也就是打印功能)。运行程序--->打印---->结束。而多线程呢,就是让我们能在打印的同时,还实现其他功能。
相当于你和同学去食堂买饭,需要买炸鸡和奶茶。单线程情况下只有你一人,你作为main线程,要一个人去买这两种东西,又费时又费力。多线程情况下,你作为main线程,去买炸鸡或者汉堡,而你同学作为一个被开启的新线程,则承担了购买另一种事物的任务,此模式下效率高,任务执行的速度也就快了。
如何创建多线程程序???
好了!理论基础知识说了这么多,终于到了激动人心的敲代码环节。俗话说“光说不练 屁用没有”。话不多说,开整!
①首先我们要创建两个类 这里简称为 A 和 B
其中A为主方法所在类 。B(MyThread)作为继承Thread的子类
②然后 在B中重写run()方法。run方法的方法体表示的就是线程需要执行的任务(打印语句等等)
③最后在 A中创建子类对象 ,通过对象名调用start( )方法,开启新的线程,执行run方法。(注意 这里博主还在主线程加入了一条输出语句 是为了更好的理解 多线程 多任务执行的这个概念,建议各位也可模拟一下 更好理解多线程代码)
①首先 我们要创建一个 【实现类】 来实现Runnable接口,并重写run方法
②然后在主方法类中创建实现类对象 同时创建Thread对象。并在参数列表里填入实现类对象名称,作为参数传入。
③通过Thread对象的对象名调用start方法。开启多线程,执行run方法
Lambda表达式是非常常用的创建多线程程序的创建方法。格式为:
Thread 线程名称 =new Thread( ( )->){
方法体
}
Thread t=new Thread(() ->{
}
此时中括号里可以直接编写多线程的任务。此举相当于是直接重写了run方法。最最重要的是,即使是Lambda表达式,写完之后也需要调用start方法,开启多线程,执行任务。
我们可以发现 调用start方法几乎在每个方法中都用到。可想而知其的重要性!!!所以这里博主也引入注意来提醒大家!!!
很多同学在编写完程序之后 可能会鬼使神差的头脑昏昏的调用了run方法,发现程序也跑了起来,也完成了打印工作。但其实!!! 这个举动根本没有开启多线程!!!!此时还是只有一个main线程在执行任务,它执行的任务,就是执行了这个run方法。
好了 本bo的处女作也就到此为止,带大家粗略的浅显的了解了一下多线程的相关基础知识,和如何构建多线程代码。本bo实力薄弱,实属小白。文中有很多描述的不到位甚至是知识欠缺的地方,希望大家多多体谅!多多提出意见,我及时改正!我们下次再见!