【Java创建线程的3种方式】

本文详细介绍了Java中创建线程的三种方法:继承Thread类、实现Runnable接口和实现Callable接口。每种方式都有其优缺点,例如继承Thread类方便获取当前线程但限制了继承,实现Runnable接口增加了灵活性,而Callable接口则允许获取线程执行结果。在实际应用中,开发者可以根据需求选择合适的方式创建线程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


一、继承Thread类

    public static class ThreadExtend extends Thread {
        public void run() {
            System.out.println("Thread extends method!");
        }
    }

优点

在run()方法内部获取当前线程直接使用this即可,无需使用Thread.currentThread()方法;
缺点
java是单继承,继承了Thread之后无法继承其他类。另外任务与代码没有分离,当多个线程执行一样的任务时需要多份任务代码。

二、实现Runnable接口

    public static class RunnableImplement implements Runnable {
        @Override
        public void run() {
            System.out.println("Runnable implements method!");
        }
    }

优点
子类除了可以实现Runnable接口之外,还可实现其他接口,增加了灵活性。

三、实现Callable接口

    public static class CallableImplement implements Callable<String> {

        @Override
        public String call() throws Exception {
            return "Callable implements method!";
        }
    }

优点
前两者都可以执行任务,但是没有返回值,无法获取线程执行后的结果。通过实现Callable接口可以获取返回值,除此之外通过泛型可以获取不同类型的结果。

四、结果

    public static void main(String[] args) throws Exception {
        ThreadExtend threadExtend = new ThreadExtend();
        threadExtend.start();

        RunnableImplement runnableImplement = new RunnableImplement();
        Thread thread = new Thread(runnableImplement);
        thread.start();

        FutureTask<String> futureTask = new FutureTask<>(new CallableImplement());
        new Thread(futureTask).start();
        System.out.println(futureTask.get());
    }

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值