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

相关推荐
步行cgn4 分钟前
AOP 通知的类型详解
开发语言
weixin_307779137 分钟前
从“人操作仪器”到“Agent 自主发现”:OPL 金属材料自驱动实验室 MVP 技术论述
开发语言·人工智能·算法·架构
笑鸿的学习笔记40 分钟前
C++笔记之SIMD与SSE指令集
开发语言·c++·笔记
anew___1 小时前
《从零手写操作系统 (20):ELF加载器——让OS读懂现代编译器》
java·服务器·前端
code2cat1 小时前
【随笔】MCP资源更新订阅:通知到达以后,Agent怎样刷新旧资料
java·后端·开发工具·ai agent·mcp
福兮说1 小时前
URL 编码的七个坑:c++ 传到后端变空格、%25 套娃、截断 emoji 直接报错
开发语言·前端·javascript·node.js·url
小的时候可菜了1 小时前
JS 异步的本质:从单线程到 thenable(一条进化链)
开发语言·前端·javascript
可乐鸡翅yeah_1 小时前
hls.js 配置 loadStartPosition,点播起始播放位置踩坑
开发语言·javascript·网络协议·ecmascript·m3u8在线
一只旭宝2 小时前
C++ 后端开发面试题整理
java·c++·面试
sunshine22 girl2 小时前
Java学习五 面向对象高级5 内部类3-静态内部类和局部内部类(了解)
java·学习