java中实现多线程的两种方式(代码片段)

十木禾 十木禾     2023-01-30     346

关键词:

Java中对于对于多线程的实现主要提供了两种方法

  • 继承 Thread()
  • 实现Runnable接口

接下来从这两个方面进行说明相关知识。


继承 Thread()

写一个类直接继承 Thread()类,然后重写Thread()类的run()方法,调用其start()方法即可启动线程。

package com.blog.article2;

/**
 * @func 继承Thread实现多线程
 * @author 张俊强~
 * @time 2017/10/25 13:12
 * */
public class ArticleOne 

    public static void main(String[] args)
        MyThread mt1=new MyThread("线程一");
        MyThread mt2=new MyThread("线程二");

        mt1.start();  //启动线程
        mt2.start();

    


/*---------------核心代码-------------------*/
class MyThread extends Thread

    public String threadName;

    public MyThread(String threadName)
        this.threadName=threadName;
    
    /*--------- 重写 run() 方法 ------------*/
    public void run() 
        while (true) 
            try 
                Thread.sleep(1000);
             catch (InterruptedException e) 
                // TODO Auto-generated catch block
                e.printStackTrace();
            
            System.out.println(threadName + "正在下载文件……");
        
    

/*---------------end-------------------*/

实现Runnable接口

写一个类实现Runnable接口,然后实现其run()方法即可。
启动线程首先实例化一个Thread,并传入自己的MyThread实例即可,调用Strat()方法即可。

package com.blog.article2;

public class ArticleTwo 

    public static void main(String[] args) 
        MyThread mt1=new MyThread("线程一");
        MyThread mt2=new MyThread("线程二");

        new Thread(mt1).start();    //启动线程
        new Thread(mt2).start();
    


/*---------------核心代码-------------------*/
class MyThread implements Runnable

    public String threadName;

    public MyThread(String threadName)
        this.threadName=threadName;
    

    // 实现接口的抽象方法
    public void run() 
        while (true) 
            try 
                Thread.sleep(1000);
             catch (InterruptedException e) 

                e.printStackTrace();
            
            System.out.println(threadName + "正在下载文件……");
        
    

/*---------------end-------------------*/

我们看一下Thread()类的源码看看有什么发现没有。

public class Thread implements Runnable 
    //………………
    private Runnable target;

    //………………
    public Thread(Runnable target) 
        init(null, target, "Thread-" + nextThreadNum(), 0);
    
    //………………
    @Override
    public void run() 
        if (target != null) 
            target.run();
        
    
    //………………

我们发现Thread()类也是实现了Runnable接口,并实现了run()方法。
Thread()类中的run()方法中,还是调用了我们写的MyThread实例的run()方法。


一般写到多线程都会有一个非常经典的窗口卖票的例子,将在下一篇博客中介绍。午安 ^_^ ~

18.2实现线程的两种方式(代码片段)

一、概述   在Java中主要提供两种方式实现线程,分别为继承java.lang.Thread类与实现java.lang.Runnable接口。二、继承Thread类   a、Thread类是java.lang包中的一个类,从这个类中实例化的对象代表线程,程序员启动一个新线程需要建... 查看详情

java示例代码_在Java中实现多线程池

java示例代码_在Java中实现多线程池 查看详情

java中多线程的两种创建方式(代码片段)

一丶继承Thread类实现多线程第一步:继承Thread类第二步:重写run()方法第三步:创建继承了Thread类的对象,调用start()方法启动。//线程创建方式一:/*第一步:继承Thread类第二步:重写run()方法第三步:创建继承了Thread类... 查看详情

java多线程编程的两种方式(代码片段)

上一篇文章讲了多线程的同步但是发现好多同学对多线程的如何编程有点疑惑,今天根据网上的一些资料和方法来简单根据我之前的示例代码来演示一些,多线程编程实现的两种方法:1、定义类继承thread类并且重写... 查看详情

java多线程带你用不一样的思维看创建线程的两种方式(代码片段)

文章目录创建线程的两种方式start和run方法解析彩蛋:同时用两种方法来实现同一个线程,会遇到什么小知识:调用start方法,线程就会立刻启动吗?创建线程的两种方式通过实现Runnable接口publicclassCreateThread//继承Th... 查看详情

系统运维系列之java中实现多线程的方式补充

1介绍接本专题博客之系统运维系列之java中实现多线程的方式上篇博客提到多线程使用的4种方式,分别是:实现方式1:继承Thread类,重写该类的run方法;实现方式2:实现Runnable接口,并重写该接口的run... 查看详情

实现多线程的两种方式(代码片段)

...ead类实现了Runnable,由于java中不支持多继承,所以实现多线程时,可以采用实现Runnable的方式。2.实现Runnable接口。 注意一下声明与调用不仅仅只是new一下,start一下,而是new两下,start一下:publicclassMyRunn 查看详情

线程的两种实现方式(代码片段)

线程的两种实现方式(1)继承Thread类``/***继承Thread类**/publicclassPayThreadextendsThread@Overridepublicvoidrun()System.out.println("继承Thread");publicstaticvoidmain(String[]args)ThreadpayThread=newPayThread();payT 查看详情

java中实现多线程继承thread类与实现runnable接口的区别

Java中线程的创建有两种方式:  1.  通过继承Thread类,重写Thread的run()方法,将线程运行的逻辑放在其中  2.  通过实现Runnable接口,实例化Thread类  在实际应用中,我们经常用到多线程,如... 查看详情

java多线程带你用不一样的思维看创建线程的两种方式(代码片段)

文章目录创建线程的两种方式start和run方法解析彩蛋:同时用两种方法来实现同一个线程,会遇到什么小知识:调用start方法,线程就会立刻启动吗?创建线程的两种方式通过实现Runnable接口publicclassCreateThread//继承Th... 查看详情

开启线程的两种方式(代码片段)

...在使用层面,有很大的相似性,因而不再详细介绍二开启线程的两种方式方式一fromthreadingimportThreadimporttimedefsayhi(name):time.sleep(2)print(‘%ssayhello‘%name)if__name__==‘__main__‘:t=Th 查看详情

线程的两种实现方式(代码片段)

线程有两种实现方式一,Thread类  publicclassThreadimplementsRunnable  二,Runnable接口  publicinterfaceRunnable    publicabstractvoidrun();  区别:Thread是一个类,他继承了runnable接口,而runnable是一个接口,一个类只能有一个父类... 查看详情

创建线程的两种方式比较threadvsrunnable(代码片段)

1.首先来说说创建线程的两种方式一种方式是继承Thread类,并重写run()方法 1publicclassMyThreadextendsThread2@Override3publicvoidrun()4//TODOAuto-generatedmethodstub5678//线程使用9MyThreadmt=newMyThread();//创建线程10mt.start();//启动 查看详情

7并发编程-(线程)-开启线程的两种方式(代码片段)

thread/英 /θred/ 美 /θr?d/ 线程1、threading模块介绍multiprocess模块的完全模仿了threading模块的接口,二者在使用层面,有很大的相似性,因而不再详细介绍2、开启线程的两种方式2.1、方式一 fromthreadingimportTh... 查看详情

线程实现的两种方式及区别(代码片段)

我们来用最经典的卖票的案例,表明两种实现方式的区别,同时分析线程不安全产生的原因一、继承Thread类packagetest;/***@Description*@Authorshusheng*@Email[email protected]*@Date2018/8/31*/publicclassSellTicketOneextendsThreadprivatestaticintticke 查看详情

线程概述以及线程的两种创建方式(代码片段)

...xtendsThreadprivateStringname;publicCountThread(Stringname)super(name);/***线程的执行体**创建新执行线程有两种方法,一种方法是将类声明为Thread的子类,该子类应该重写Thread类中的run方法*接下来可以分配并且启动该子类的实例 查看详情

实现多线程编程的两种方式(代码片段)

1.继承Thread类(Thread类实现了Runnable接口:publicclassThreadimplementsRunnable)2.实现Runnable接口实例代码:1.继承Thread类publicclassMyThreadDemopublicstaticvoidmain(String[]args)MyThreadthread=newMyThread();thread.start( 查看详情

传统线程技术中创建线程的两种方式(代码片段)

传统的线程技术中有两种创建线程的方式:一是继承Thread类,并重写run()方法;二是实现Runnable接口,覆盖接口中的run()方法,并把Runnable接口的实现扔给Thread。这两种方式大部分人可能都知道,但是为什么这样玩就可以呢?下面... 查看详情