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

相关推荐
快乐就好ya28 分钟前
Java多线程
java·开发语言
IT学长编程33 分钟前
计算机毕业设计 二手图书交易系统的设计与实现 Java实战项目 附源码+文档+视频讲解
java·spring boot·毕业设计·课程设计·毕业论文·计算机毕业设计选题·二手图书交易系统
CS_GaoMing1 小时前
Centos7 JDK 多版本管理与 Maven 构建问题和注意!
java·开发语言·maven·centos7·java多版本
艾伦~耶格尔1 小时前
Spring Boot 三层架构开发模式入门
java·spring boot·后端·架构·三层架构
man20172 小时前
基于spring boot的篮球论坛系统
java·spring boot·后端
2401_858120532 小时前
Spring Boot框架下的大学生就业招聘平台
java·开发语言
S hh2 小时前
【Linux】进程地址空间
java·linux·运维·服务器·学习
转调2 小时前
每日一练:地下城游戏
开发语言·c++·算法·leetcode
Java探秘者2 小时前
Maven下载、安装与环境配置详解:从零开始搭建高效Java开发环境
java·开发语言·数据库·spring boot·spring cloud·maven·idea
攸攸太上2 小时前
Spring Gateway学习
java·后端·学习·spring·微服务·gateway