【Java】多线程的第一种实现方式(继承Thread类的方式进行实现)

一、查询API帮助文档

先来打开 API帮助文档,来查一查这个 Thread 到底是什么。

下面介绍的意思就是:Thread 就表示Java中的一个线程,如果你想拥有一条线程的话,就可以创建它的对象,并开启它就行了。

image-20240506131908830

创建新执行线程有两种方法。一种方法是将类声明为 Thread 的子类。该子类应重写 Thread 类的 run 方法。接下来可以分配并启动该子类的实例(也就是说接下来可以创建该子类的对象)。例如,计算大于某一规定值的质数的线程可以写成: 。

即自己写一个类,然后继承 Thread,在这里它定义了一个成员变量,这个成员变量就是用来进行判断的。

但是如果我不想做这么复杂的逻辑,我只想打印一些输出语句。

那么上面的成员变量和构造方法都不需要写,直接重写 run() 即可。

run() 中书写当前线程要执行的代码。

image-20240506132146358

这个类书写完后,继续往下开:我们就可以创建并启动一个线程。

创建这个类的对象,然后调用 start(),就可以开启这条线程了。

在开启完后,它就会自动的去找这个类里面的 run(),执行 run() 里面的代码。

image-20240506132402834


二、代码示例

线程的第一种启动方式:
 1. 自己定义一个类继承Thread。
 Thread是Java已经定义好的,它就表示是一个线程。那我自己写的这个类继承Thread类,那我自己写的这个类也应该表示一个线程,因为是它的子类。
 2. 重写run方法
 3. 创建子类的对象,并启动线程

方法介绍

方法名说明
void run()在线程开启后,此方法将被调用执行
void start()使此线程开始执行,Java虚拟机会调用run方法()

自己定义一个类继承Thread,并重写run方法

public class MyThread extends Thread{
    @Override
    public void run() {
        //书写线程要执行代码
        //这里想让它打印100次HelloWorld
        for (int i = 0; i < 100; i++) {
            System.out.println(getName() + "HelloWorld");
        }
    }
}

创建子类的对象

MyThread t1 = new MyThread();
MyThread t2 = new MyThread();

此时我们不能直接去调用 run(),例如 t1.run(),如果这么干,那么就仅仅只是调用一个方法,跟我们之前创建对象调方法是一模一样的。

这里应该调用 start() ,才表示开启线程。

//这里给两个线程起个名字,用于区分两条线程
t1.setName("线程1");
t2.setName("线程2");

t1.start();
t2.start();

启动程序,此时就能看见我们的程序一会执行第一条线程,一会执行第二条线程,可以发现是两个线程交织在一起,交替执行的。

image-20240506133147728

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值