当前位置:首页 > 后端开发 > java之多线程中Thread类和Runnable接口使用方法

java之多线程中Thread类和Runnable接口使用方法

7个月前 (05-20)36

java提供了两种线程方式,一种是继承java.lang包下的Thread类,覆写Thread类的run()方法,在run()方法中实现运行在线程上的代码!第二种是实现Runnable接口创建多线程。下面就跟大家具体的介绍一下这两种方式!
在学习多线程之前先来看看我们熟悉的单线程程序

package bean;
public class Example3_2 {
    public static void main(String[] args){
        MyThread myThread=new MyThread();//创建myhread对象
        myThread.run();
        while (true){
            System.out.println("Main方法在运行");
        }
    }
}
class MyThread{
    public void run(){                                                                                
        while(true){
            System.out.println("MyThread类的run()方法在运行");
        }
    }
}

运行结果如下面所示
java之多线程中Thread类和Runnable接口使用方法 _ Java侠
从上面运行结果可以看出程序一直打印的是“MyThread类的run()方法在运行”,而不会执行main()方法中的打印语句。这是因为上面程序是一个单线程程序,调用MyThread类的run()方法时遇到了死循环,循环会一直进行。
如果想要两个while循环中的打印语句能够并发执行,那就需要实现多线程了,实现多线程有两种方式,现在就给大家介绍第一种方式

1.继承Thread类创建多线程

把以上代码进行简单修改

package bean;

public class Example3_2 {
     
    public static void main(String[] args){
        MyThread myThread=new MyThread();//创建线程myhread的线程对象
        myThread.start();                //开启线程
        while (true){                    //通过死循环语句打印输出
            System.out.println("Main方法在运行");
        }
    }
}
class MyThread extends Thread{
     
    public void run(){                                                                                
        while(true){                     //通过死循环语句打印输出
            System.out.println("MyThread类的run()方法在运行");
        }
    }
}

运行结果如下面:
java之多线程中Thread类和Runnable接口使用方法 _ Java侠
从上面能看出两个循环语句轮流执行了,说明该例实现了多线程!!!
单线程的程序在运行时,会按照代码的调用顺序进行执行,而在多线程中main()方法和MyThread类的run()方法却可以同时运行,互不影响,这正是单线程和多线程的区别。

2.实现Runnable接口创建多线程

首先,为啥要使用Runable接口来创建多线程呢,这是因为通过继承Thread类实现多线程有一定的局限性,因为java中只支持单继承,一个类一旦继承了某个父类就无法再继承Thread类了
Runnable克服了这种弊端,Runnable接口提供了run()方法的原型,因此创建新的线程类时,只要实现此接口,既只要特定的程序代码实现Runnable接口中的run()方法,就可以完成新线程类的运行下面是一个使用Runnble接口并实现run方法创建线程的例子。

package bean;

public class Example3_2 {
     
    public static void main(String[] args){
        MyThread myThread=new MyThread();  //创建线程myhread的线程对象
        Thread thread=new Thread(myThread);//创建线程对象
        thread.start();                    //开启线程,执行线程中的run()方法
        while (true){                      //通过死循环语句打印输出
            System.out.println("Main方法在运行");
        }
    }
}
class MyThread implements Runnable{
     
    public void run(){                                                                                
        while(true){                       //通过死循环语句打印输出
            System.out.println("MyThread类的run()方法在运行");
        }
    }
}

运行结果和上面一样
java之多线程中Thread类和Runnable接口使用方法 _ Java侠
下面咱们具体讲一下用Runnable创建线程步骤:

Runnable创建线程步骤

(1)创建一个实现Runnable接口的类,并且在这个类中重写run方法
class MyThread implements Runnable{
     
    public void run(){                                                                                
        ..........
        }
(2)使用关键字new创建一个MyThread的实例
MyThread myThread=new MyThread();
(3)通过Runnable的实例创建一个线程对象,在创建线程对象时,调用的构造函数是new Thread(myThread),它用myThread中实现的run()方法作为新线程对象的run()方法。
Thread thread=new Thread(myThread);
(4)通过调用ThreadType对象的start()方法启动线程运行。
thread.start();

以上是两者的简单使用方式,下一篇会讲解一下两种多线程方式的区别,有需要的可以看一下!!!

作者:菜鸟小张
来源链接:https://blog.csdn.net/qq_40219476/article/details/78444707

“java之多线程中Thread类和Runnable接口使用方法” 的相关文章

1.Java的通用版本:java 8

1.Java的通用版本:java 8

1.2020 年 Java 技术报告:半数开发者仍在使用 Java 8 详见https://mp.weixin.qq.com/s/6tdj_AKi7wTizWVTf6Rwjg...

java集合List解析

作为一个Developer,Java集合类是我们在工作中运用最多的、最频繁的类。相比于数组(Array)来说,集合类的长度可变,更加适合于现代开发需求; Java集合就像一个容器,...

99 道 Java 多线程面试题,看完我跪了!

99 道 Java 多线程面试题,看完我跪了!

今天给大家更新的是一篇关于多线程面试的文章,是根据时下热门的面试内容给大家进行总结的,如有雷同,请多见谅。 本篇文章属于干货内容!请各位读者朋...

JAVA多线程下高并发的处理经验

JAVA多线程下高并发的处理经验

java中的线程:java中,每个线程都有一个调用栈存放在线程栈之中,一个java应用总是从main()函数开始运行,被称为主线程。一旦创建一个新的线程,就会产生一个线程栈。...

Java多线程(三)

Java多线程(三)

个人博客 http://www.milovetingting.cn Java多线程(三) 前言...

Java对多线程的理解

Java对多线程的理解

线程是依赖于进程 线程:是进程中的单个顺序,是一条执行路径。 一、继承Thread类 Thread类是...

Java集合,集合的方法,集合的遍历

Java集合,集合的方法,集合的遍历

package com.atgui.java; import org.junit.Test; import java.u...

Java集合面试总结

★★★★★集合框架:用于存储数据的容器。 特点: 1:对象封装数据,对象多了也需要存储。集合用于存储对象。 2:对象的个数确定可以使用数组,但是...

Java多线程(详解)

Java多线程(详解)

Java多线程 一、进程与线程 二、Java中线程实现的方式...

Java多线程并发07——锁在Java中的实现

Java多线程并发07——锁在Java中的实现

上一篇文章中,我们已经介绍过了各种锁,让各位对锁有了一定的了解。接下来将为各位介绍锁在Java中的实现。关注我的公众号「Java面典」了解更多 Java 相关知识点。...