Java中实现多线程的两种方式

Posted 十木禾

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java中实现多线程的两种方式相关的知识,希望对你有一定的参考价值。

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()方法。


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

以上是关于Java中实现多线程的两种方式的主要内容,如果未能解决你的问题,请参考以下文章

Java中实现多线程的两种方式之间的区别

怎么在基于对话框的MFC程序中实现多线程?

怎么在基于对话框的MFC程序中实现多线程?

JAVA中实现多线程的四种方式

java中类加载的两种方法是啥?

java 如何实现多线程