创建多线程的两种方法及其比较

第一种方法(继承Thread)

public class ThreadTest {

    public static void main(String[] args) {//运行main方法的线程是主线程



        for(int i=0;i<10;i++){
            System.out.println(Thread.currentThread().getName());
            System.out.println("main的主线程"+i);

        }


        new Thread1("自定义线程").run();

    }



}
  class Thread1 extends Thread{

    public Thread1(String name) {
        super(name);
    }

    @Override
    public void run() {
     for(int i=0;i<10;i++){
         System.out.println(Thread1.currentThread().getName());
            System.out.println(this.getName()+i);
     }

    }
}

第二种方法(实现Runnable)

步骤

  1. 定义Runnable接口的实现类,并重写该接口的run()方法,该run()方法的方法体同样是该线程的线程执行体
  2. 创建Runnable实现类的实例,并以此实例作为Thread的target来创建Thread对象,该Thread对象才是真正的线程对象
  3. 调用线程对象的start()方法来启动线程
public class Test2 {

    public static void main(String[] args) {

        ThreadTest2 threadTest2 = new ThreadTest2();

        new Thread(threadTest2).start();
    }

}

class ThreadTest2 implements Runnable{

    @Override
    public void run() {
        for(int i=0;i<10;i++){
            System.out.println(Thread.currentThread().getName()+i);
        }
    }
}

两种方法之间的区别

实现Runnable方法比较容易实现资源共享
总结:
实现Runnable接口比继承Thread类所具有的优势:

  1. 适合多个相同的程序代码的线程去共享同一个资源
  2. 可以避免java中的单继承的局限性
  3. 增加程序的健壮性,实现解耦操作,代码可以被多个线程共享,代码和线程独立
  4. 线程池只能放入实现Runnable或者Callable类线程,不能直接放入继承Thread的类
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值