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

来源:互联网 发布:淘宝 绳子泳衣 编辑:程序博客网 时间:2024/06/03 06:34

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


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

原创粉丝点击