多线程的创建的两种方式

第一种:继承Thread类

public class ThreadExplain extends Thread {
    private String name;
    ThreadExplain(String name){
        super(name);//把线程名称传进线程里
        this.name = name;
    }
    //多线程需要从写Thread里的run方法
    public void run(){
        for(int i = 0;i<10;i++){
            //Thread.currentThread().getName()获取运行时线程名称
            //getName()获取线程名称
            //主线程的名称main
            System.out.println(name+":name="+Thread.currentThread().getName());
        }
    }

}
public static void main(String[] args){
            ThreadExplain t1 = new ThreadExplain("张三");
            ThreadExplain t2 = new ThreadExplain("小王");
//          开启多线程
            t1.start();
            t2.start();

第二种方式实现Runnable接口

1、定义类实现线程Runnable接口

2、覆盖线程接口里run方法,将线程的任务代码封装到run方法中

3、通过Thread创建线程对象,并将Runable接口的子类对象作为Thread类的构造函数的参数进行传递

原因:因为线程任务都封装到在Runnable接口子类对象的run方法里,所以在线程对象创建时,就必须明确线程要运行的任务

4、调用线程对象的start方法进行线程的开启

5、实现Runnable的好处:

1)避免了java单继承的局限性

2)将线程的任务从线程的子类中分离出来,进行了单独的封装,按照面对对象的思想将任务封装成对象。

 

常用的创建线程的方式为第二种

public class ThreadExplain implements Runnable{
    private String name;

    public ThreadExplain(String name) {
        this.name = name;
    }

    @Override
    public void run() {
        show();
    }
    public void show(){
        for(int i = 0;i<10;i++){
            //Thread.currentThread().getName()获取运行时线程名称
            //getName()获取线程名称
            //主线程的名称main
            System.out.println(name+":name="+Thread.currentThread().getName());
        }
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}
    public static void main(String[] args){
        ThreadExplain t = new ThreadExplain("张三");
        ThreadExplain tt = new ThreadExplain("金毛");
        Thread t1 = new Thread(t);
        Thread t2 = new Thread(tt);
        t1.start();
        t2.start();

    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值