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写法,较为方便~

相关推荐
唐青枫3 小时前
Java JDBC 实战指南:从 Connection 到事务和连接池
java
一个做软件开发的牛马4 小时前
MyBatis-Plus 从零实战:完整搭建可运行 Demo,BaseMapper 零 SQL、Wrapper 条件构造、分页插件与代码生成器详解
java·后端
用户3721574261354 小时前
Java 处理 PDF 图片:提取 PDF 中的图片,并压缩 PDF 图片体积
java
用户3721574261355 小时前
Java 打印 Word 文档:从基础打印到高级设置
java
用户35218024547520 小时前
当 Prompt 学会"热更新":Spring Boot × Nacos3 AI 实战
java·spring boot·ai编程
东坡白菜1 天前
破局全栈:一个前端开发的Java入门实战记录(1)
java·全栈
唐青枫1 天前
Java Tomcat 实战指南:从 Servlet 容器到 Spring Boot 部署
java
wsaaaqqq1 天前
roudan:自由选择实体、灵活操作数据、快速写入数据库的 Java 框架
java
plainGeekDev1 天前
null 判断 → Kotlin 可空类型
android·java·kotlin
糖拌西瓜皮1 天前
Java开发者视角:深入理解Node.js异步编程模型
java·后端·node.js