栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java中实现多线程继承Thread类与实现Runnable的区别

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java中实现多线程继承Thread类与实现Runnable的区别

先来看看两种方式如何实现的: 一.继承Thread类实现多线程 1.自定义线程类去继承Thread类实现其run方法
public class MyThread extends Thread{
    @Override
    public void run() {
        for (int i = 0;i<100;i++){
            System.out.println(getName() + "=" + i);
        }
    }
}
2.测试类中创建自定义类对象,调用其start()方法开启线程测试即可
public class ThreadTest {
    public static void main(String[] args) {
        MyThread t1 = new MyThread();
        MyThread t2 = new MyThread();

        t1.setName("线程1");
        t2.setName("线程2");

        t1.start();
        t2.start();
    }
}
二.实现Runnable接口实现多线程 1.自定义线程类去实现Runnable接口实现其run方法
public class MyRunnable implements Runnable{

    @Override
    public void run() {
        for (int i = 0;i<100;i++){
            System.out.println("线程输出"+i);
        }
    }
}
2.测试类中创建接口类型的自定义类对象,利用Thread类的构造方法将子类对象传递
public class RunnableTest {
        public static void main(String[] args) {


            //创建自定义接口对象
            Runnable runnable = new MyRunnable();
            //将 Runnable 接口的子类对象作为参数传递给 Thread 类的构造函数
            Thread t1 = new Thread(runnable);
            Thread t2 = new Thread(runnable);

            //开始线程
            t1.start();
            t2.start();
        }

}
从以上两种实现方法可以看得出,两种方式都需要重写run()方法,创建Thead类对象,调用其start方法来开启线程。 但实现Runnable接口较于继承Thread类有以下几点好处: 1. 避免了继承Thread类具有单继承的局限性,符合面向对象思想。 2. 避免了创建Thread子类对象,既有线程对象,又有线程任务的缺点。 3. 实现runnable接口将线程任务单独分离出来封装成对象,类型就是Runnable接口类型,实现了线程对象与线程任务的解耦合。 所以我们一般采用实现Runnable接口的方式来完成多线程操作。
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/337168.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号