Java EE:Thread创建线程的五种写法(源码详解)

目录

[1、继承Thread 来创建一个线程类](#1、继承Thread 来创建一个线程类)

[2、实现 Runnable 接口来创建 Thread 类](#2、实现 Runnable 接口来创建 Thread 类)

[3、使用匿名内部类创建 Thread 子类对象](#3、使用匿名内部类创建 Thread 子类对象)

[4、使用匿名内部类创建 Runnable 子类对象](#4、使用匿名内部类创建 Runnable 子类对象)

[5、使用 lambda 表达式创建 Runnable 子类对象](#5、使用 lambda 表达式创建 Runnable 子类对象)


1、继承Thread 来创建一个线程类

java 复制代码
//方法一:继承Thread类

//继承 Thread 来创建一个线程类
class MyThread extends Thread {
    @Override
    public void run() {
        //在这里面写的代码,就是该线程要完成的工作
        System.out.println("线程运行");
    }
}
public class Demo1 {
    public static void main(String[] args) throws InterruptedException {
        //创建 MyThread 的实例
        MyThread thread = new MyThread();

        //调用 start 方法启动线程
        thread.start();
    }
}

2、实现 Runnable 接口来创建 Thread 类

java 复制代码
//方法二: 实现 Runnable 接口

//实现 Runnable 接口
class MyRunnable implements Runnable {
    @Override
    public void run() {
        //在这里面写的代码,就是该线程要完成的工作
        System.out.println("线程运行");    }
}
public class Demo2 {
    public static void main(String[] args) {
        // 创建 Thread 类实例,调用 Thread 的构造方法时将 Runnable 对象作为参数
        Thread thread = new Thread(new MyRunnable());

        //调用 start 方法启动线程
        thread.start();
    }
}

对比方法一与方法二:

1、继承Thread 类,可以直接使用 this 表示当前线程对象的使用。

2、实现 Runnable 接口,this表示的是 MyRunnable 的引用,要表示当前线程对象需要使用 currentThread() 方法。

3、使用匿名内部类创建 Thread 子类对象

java 复制代码
//方法三:使用匿名内部类创建 Thread 子类对象
public class Demo3 {
    public static void main(String[] args) {
        //使用匿名内部类创建 Thread 子类对象
        Thread thread = new Thread() {
            @Override
            public void run() {
                System.out.println("使用匿名内部类创建 Thread 子类对象");
            }
        };
        //启动线程
        thread.start();
    }
}

4、使用匿名内部类创建 Runnable 子类对象

java 复制代码
//方法四:使用匿名内部类 Runnable 子类对象
public class Demo4 {
    public static void main(String[] args) {
        Thread thread = new Thread(new Runnable() {
            @Override
            public void run() {
                System.out.println("使用匿名内部类创建 Runnable 子类对象");
            }
        });

        thread.start();
    }
}

5、使用 lambda 表达式创建 Runnable 子类对象

java 复制代码
//方法五:使用 lambda 表达式创建 Runnable 子类对象

public class Demo5 {
    public static void main(String[] args) {
        Thread thread = new Thread(() -> {
            //在这里面写的代码,就是该线程要完成的工作
            System.out.println("线程运行");
        });

        //启动线程
        thread.start();
    }
}

较为推荐lambda写法,较为方便~

相关推荐
是梦终空20 分钟前
计算机毕业设计252—基于Java+Springboot+vue3+协同过滤推荐算法的农产品销售系统(源代码+数据库+2万字论文)
java·spring boot·vue·毕业设计·源代码·协同过滤算法·农产品销售系统
2301_7644413326 分钟前
使用python构建的应急物资代储博弈模型
开发语言·python·算法
丿BAIKAL巛28 分钟前
Java前后端传参与接收全解析
java·开发语言
code bean34 分钟前
【C++】Scoop 包管理器与 MinGW 工具链详解
开发语言·c++
cc蒲公英1 小时前
javascript有哪些内置对象
java·前端·javascript
guslegend1 小时前
Spring AOP高级应用与源码剖析
java
Rover.x1 小时前
head table is mandatory
java·apache
yanghuashuiyue1 小时前
Java过滤器-拦截器-AOP-Controller
java·开发语言
shoubepatien1 小时前
JAVA —— 03
java·jvm
a努力。1 小时前
【基础数据篇】数据等价裁判:Comparer模式
java·后端