Java创建线程的三种方式

 前言

        Java创建线程方式可分为3类,分为为继承Thread类、实现Runnable接口、实现Callable接口。下面介绍这3类的具体使用。

一、继承Thread类

        1、类继承Thread类,并重写run()方法,将线程的执行体写在run()方法中,创建该类的对象就相当于创建了一个线程对象,线程对象调用start()方法启动线程。注意:启动线程不能调用run()方法。

public class Method1{
    public static void main(String[] args) {
        Test1 test1 = new Test1(); // 创建一个线程对象
        test1.start(); // 启动线程
    }
}
class Test1 extends Thread{
    @Override
    public void run() {
        System.out.println("线程在运行中...");
    }
}

        2、上述方法需要单独创建一个类,可以使用匿名类的方式减少创建该类。

   

public class Method1{
    public static void main(String[] args) {
        Thread thread = new Thread(){
            @Override
            public void run() {
                System.out.println("线程正在运行中...");
            }
        };
        thread.start();
    }
}

二、继承Runnable接口

        1、类实现Runnable接口,并实现run()方法,将线程的执行体写入run()方法中。创建类的实例,并将其作为Thread的target来创建Thread对象,Thread对象为线程对象,线程对象调用start()方法启动线程。

public class Method1{
    public static void main(String[] args) {
        Test1 test1 = new Test1(); // 创建一个线程对象
        Thread thread = new Thread(test1);
        thread.start();
    }
}
class Test1 implements Runnable{
    @Override
    public void run() {
        System.out.println("线程在运行中...");
    }
}

        2、上面的方式需要子类实现Runnable接口,显然不好用,可以通过匿名类实现Runnable接口,就不用再单独写一个类了,创建Runnable实例,并将对象作为Thread的target来创建Thread对象,Thread对象为线程对象,线程对象调用start()方法启动线程。

public class Method1{
    public static void main(String[] args) {
        // 匿名类实现一个接口 创建任务对象
        Runnable runnable = new Runnable(){
            @Override
            public void run() {
                System.out.println("线程运行中...");
            }
        };
        // 创建线程对象
        Thread thread = new Thread(runnable);
        thread.start();
    }
}

        3、上一种方法中,创建任务对象,然后再将任务对象传参给线程对象,可以简化为下面这样:

public class Method1{
    public static void main(String[] args) {
        
        Thread thread = new Thread(new Runnable(){
            @Override
            public void run() {
                System.out.println("线程运行中...");
            }
        });
        thread.start();
    }
}

    简化之后可以使用lambda表达式再次简化,简化为:

public class Method1{
    public static void main(String[] args) {
        Thread thread = new Thread(()->{
            System.out.println("线程正在运行中");
        });
        thread.start();
    }
}

三、实现Callable接口

        和实现Runnable类似,可以自行尝试

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值