我在上一篇博客中分享了什么是线程与进程,我这篇想要分享一下如何去使用多线程,我会分享一分享些最基础的使用的方法,使我们能够快速上手去使用
Thread类
我们想要在Java中使用多线程,我们肯定是要使用Thread这个类的,用这个类创建一个对象就是一个线程,这个类的本身并不是线程,而是执行线程的类,那么这个能干些什么?以下就是这个类的一些基本使用方法
- 职责 :
- 创建并启动新线程;
- 控制线程生命周期(启动、暂停、终止);
- 提供线程间协作机制(等待、通知、中断);
- 暴露线程元信息(名称、ID、优先级、状态等
我今天主要想要分享Thread类的一些基础创建方法,后续的内容我会在以后的博客中与大家分享
方法1--继承Thread,重写run方法
我们可以自己创建一个类继承Thread类,并且重写Thread类的run方法,run方法内部写我们想要实现的逻辑,如下图所示
为了方便观察结果,我这里加了sleep,最后的结果是先执行main线程,后执行t1线程,线程之间是并发执行的(看起来并发,实际是cpu的随机调度),不加sleep这两谁先执行不好说

方法2--实现runnable类,重写run
在我们写代码中,我们希望代码之间的关联度能够降低,这样方便我们后续改代码,为什么实现这种降低耦合的效果,我们可以使用runnable来创建一个线程,如下图所示

我们创建一个runnable对象进行传参传给Thread类,在后面你还可以给Thread命名,这样我们就实现了解耦合的效果,我们可以写不同的runnable传进去
方法3--Thread使用匿名内部类
这个就很简单了,不涉及继承,而是直接使用匿名内部类来直接创建对象,直接上图
方法4--runnable使用匿名内部类
和上面的使用方法一样,直接通过匿名内部类创建runnable对象传进Thread类中

匿名内部类的写法我自认为是比较简单且简洁的,希望大家能够熟悉掌握
方法5--lambda表达式
这个是最简化的版本了,不依靠内部类直接重写run方法,lambda表达式就直接帮你重写了run方法,这个方法也很重要,写起来也很简洁

结语
对于这五种情况用的比较多的就是匿名内部类和lambda表达式,但是所有我们豆需要掌握,至少以后在工作遇到了不能够不认识,这些以后都会和大家经常见面,还会有更绕的用法,比如lambda表示中继续套runnable,我们都需要去好好理解