创建Thread对象的两种常见的方法分析

一、常见的两种方法

1.定义一个线程类,它继承类Thread并重写其中的run方法

  • 定义一个类继承Thread类

public class MyThread1 extends Thread{  

    public void run()  
    {  
        方法体1;

        }  
    }  
  • 调用自定义Thread对象
public static void main(String [] args){
        MyThread m1=new MyThread1("thread1");
        MyThread m2=new MyThread1("thread2");
        MyThread m3=new MyThread1("thread3");
        m1.start();
        m2.start();
        m3.start();
    }

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

  • 定义一个类实现Runnable接口
public class MyThread2 implements Runnable  {  

    public void run()  {  
      方法体2;
    }  
  • 调用自定义Thread对象
public static void main(String [] args){
        MyThread m1=new MyThread1("thread1");
        MyThread m2=new MyThread1("thread2");
        MyThread m3=new MyThread1("thread3");
        m1.start();
        m2.start();
        m3.start();
    }
注:其中方法体1,2中均为线程要实现的操作代码

二、两种方法的比较

  • 第一种方式,继承Thread类,类仅支持单继承,也就是说,当定义一个新的类的时候,它只能扩展一个外部类.这样,如果创建自定义线程类的时候是通过扩展 Thread类的方法来实现的,那么这个自定义类就不能再去扩展其他的类,也就无法实现更加复杂的功能。同时线程任务和线程对象绑定在一起,耦合性(紧密联系程度)高。不便于维护。

  • 第二种方式,实现Runnable接口,线程任 务在实现Runnable接口的类中,线程对象是Thread类对象,线程任务和线程对象相分离,耦合性底,便于维护,可拓展性高。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值