表情包警告。如何使用多线程上厕所

如何使用多线程上厕所。表情包警告

在上一篇文章中,我们和以上厕所为例子,优(e)雅(xin)的解释了什么是进程、线程、多线程以及为什么使用多线程。传送门 那么这一篇文章我们就来实际的看下如何使用多线程’拉shit’。

表情包警告!!!
在这里插入图片描述

创建线程的方式

  • 1、实现Runnable
  • 2、继承Thread

有的小伙伴就要说了。为什么有两种方式呢?这个我们用一个通俗而又优雅的方式来说。

上厕所(大)有几种方式呢?

  • 1、蹲着
    在这里插入图片描述

  • 2、坐着
    在这里插入图片描述

  • 3、站着

对吧,以上两种方式都能够解决我们的需求。
在这里插入图片描述

但是呢。

两种方法没有说是谁更舒服。

只是看个人习惯和场景来决定不同的方式而已,对吧。
在这里插入图片描述

一个人再怎么强也不可能在蹲厕坐着大便是吧。

当然,如果你可以,很好,是在下输了。🙏
在这里插入图片描述

ok,我们接着回来。我们下面就先分别来看下。两种方式是如何创建线程的。

由于本篇文章右边比较多的代码解析。所以我们接下来进入正常模式。

在这里插入图片描述
表情包模式:off
正常模式:on
大哥你看看你的标题,还表情包模式:off是不是不想活了。你不知道很多人都是来看图的吗?没人看你的文章啦。
在这里插入图片描述
表情包模式:on

1、Runnable 创建线程

在创建线程之前,我们首先来看一下Runnable类。

@FunctionalInterface
public interface Runnable {
    public abstract void run();
}

我们可以看到Runnable类是一个接口,并且这个接口只有一个方法run

那么我们使用Runnable方法创建线程的方法就知道了

在这里插入图片描述
实现Runnable接口 -> 实现run方法

下面来看下具体代码


// **注意** **注意** 实际的项目中最好不要使用中文拼音和英语所结合的命名,否则会出人命
// **注意** **注意** 实际的项目中最好不要使用中文拼音和英语所结合的命名,否则会出人命
// **注意** **注意** 实际的项目中最好不要使用中文拼音和英语所结合的命名,否则会出人命
// 实现Runnable类
public class LaShit implements Runnable {

    // 实现run方法,并且在run方法里面写上线程执行的操作
    public void run() {
        System.out.println("我 la shit 了");
    }
}

经过上面的代码,我们的线程执行的内容就写好了。

但是只是定义好了执行的内容是没有作用的
在这里插入图片描述

我们需要让线程执行。让线程跑起来
在这里插入图片描述

在这里插入图片描述

这是我们需要Thread类来执行线程了。

关于Thread类是什么。我们目前只需要知道Thread是线程操作类,主管线程启动、休眠、等等等操作。随着后面的学习,我会慢慢的介绍。
在这里插入图片描述

下面我们看下代码。


    public static void main(String[] args) {
        // 创建线程实例
        LaShit laShit = new LaShit();
        // 创建Thread线程操作类,并且放入线程
        Thread thread = new Thread(laShit);
        // 开启线程  
        thread.start();
    }

以上就是使用Runnable创建、启动线程的方法。

这里有的小伙伴就要问了。

在这里插入图片描述

“布丁、布丁,这样是不是太麻烦了。每次都要创建Thread类。有没有更简单的方法呢?”

还真的的有。。
在这里插入图片描述

下面我们看下创建线程的第二种方法。

2、继承Thread

Thread类是什么,我们上面已经说了。废话不多说,直接看代码

在这里插入图片描述

// 继承Thread类
public class LaShit extends Thread {
    // 重写run方法,并且在run方法中写线程执行逻辑
    @Override
    public void run() {
        System.out.println("我 La shit 了");
    }
}

之前有小伙伴说使用Runnable的时候需要创建Thread然后下可以启动线程,那么我们现在继承了Thread类之后,是不是可以直接启动线程了呢?

小脑袋瓜真聪明。答案是可以的。

在这里插入图片描述

下面看代码。

public static void main(String[] args) {
        // 创建实体
        LaShit laShit = new LaShit();// 启动线程
        laShit.start();
    }

是不是感觉使用Thread创建启动线程很方便啊?

但是,是有代价的。
在这里插入图片描述

  • 1、因为使用Thread是需要继承的,那么我们就无法再继承其他的类了。但是使用方便
  • 2、而我们实现Runnable接口的同时,也可以继承或者实现其他类。但是使用麻烦。

在这里插入图片描述

两种方法各自适用于不用的场景。所以如何使用两种方式是要看具体的环境的。
在这里插入图片描述

以上就是本篇文章的所有内容了,如果有那里不正确的欢迎小伙伴们留言告诉我。谢谢!!

祝天下程序员,头发多多、需求少少、工资多多、颜值高高。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值