多线程的学习总结-线程基础-多线程的创建与实现

本文探讨了Java中实现多线程的两种主要方式:实现Runnable接口和继承Thread类。虽然两者都能创建线程,但实现Runnable接口更利于解耦,并能避免Java不支持多继承的问题。此外,通过线程池可以有效管理资源,减少频繁创建和销毁线程的开销。因此,推荐使用实现Runnable接口的方式创建线程。
摘要由CSDN通过智能技术生成

目录

1.实现多线程的方法

2.实现线程有几种方式

3.两种创建线程的优略性 


1.实现多线程的方法

实现Runnable接口

继承Thread类

线程池创建线程

有返回值的Callable创建线程

其他创建方式,定时器Timer,匿名内部类

2.实现线程有几种方式

我们暂且先认为创建线程有两种方式,一种是实现Runnable接口创建,另一种是继承Thread类创建,其他的方式本质上都是在 new Thread() 外做了一层封装,不能被当作一种新的创建方式,接下来我们看下这两种创建线程方式又什么不一样的地方,首先我们看下这两种创建线程的方式

public class RealizeThread {

    public static void main(String[] args) {

        //实现Runnable接口创建线程
        new Thread(new ExtendsThreadRunnable()).start();

        //继承Thread类创建线程
        new ExtendsThreadThread().start();
    }
}

/**
 * 实现Runnable接口创建线程
 */
class ExtendsThreadRunnable implements Runnable{
    @Override
    public void run() {
        System.out.println("实现Runnable接口");
    }
}

/**
 * 继承Thread类创建线程
 */
class ExtendsThreadThread extends Thread{
    @Override
    public void run() {
        System.out.println("继承Thread类创建线程");
    }
}

 可以看到在继承 Thread 类创建线程时,我们通过 Thread 类的 start 方法启动了这个线程,而通过实现 Runnable 接口创建线程的时候则是  new 一个 Runnable接口的实现类, 在这个具体实现类外封装了一层Thread类,然后再通过Thread类的start方法启动线程,由此我们可以看到,这两种方法本质上都是通过实现Thread类来创建了一个线程,所以说我们可以得到以下结论:

本质上,实现线程只有一种方式,而要想实现线程执行的内容,却有两种方式,也就是通过 实现 Runnable 接口的方式,或是继承 Thread 类重写 run() 方法的方式

3.两种创建线程的优略性 

1. 从代码架构考虑,Runnable 里只有一个 run() 方法,它定义了需要执行的内容,实现了 Runnable 与 Thread 类的解耦,Thread类负责线程启动和属性设置等内容,权责分明。

2. 使用 Thread 类方式,每次执行一次任务,都需要新建一个独立的线程,执行完任务后线程走到生命周期尽头被销毁,如果还想继续执行则需要新建一个继承了 Thread 类的类,如果在线程内执行的内容少的话,相对于创建这个线程的开销有些得不偿失,如果我们通过 Runnable 接口创建线程,可以直接把任务传入线程池,使用固定的一些线程来执行任务,无需频繁的创建与销毁线程,大大降低性能开销。

3. java语言不支持多继承,所以通过继承Thread类的方式创建多线程可能会影响到以后的代码拓展。

总结:创建多线程时,优先选择通过实现Runnable接口的方式来创建线程。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值