线程创建的三大方式

简介: 线程创建的三大方式

继承Thread类 重写run方法

  1. Thread类也是Runnable接口的实现类
/**
 * @author 舒一笑
 * @date 2023/5/24
 */
public class test1 {
    public static void main(String[] args) {
        Thread01 thread01 = new Thread01();
        thread01.start();
        for (int i = 0; i < 100; i++) {
            System.out.println("mian" + i);
        }
    }
}
class Thread01 extends Thread{
    @Override
    public void run() {
        for (int i = 0; i < 100; i++) {
            System.out.println("Thread01" + i);
        }
    }
}

实现Runnable接口 重写run方法

/**
 * @author 舒一笑
 * @date 2023/5/24
 */
public class test1 {
    public static void main(String[] args) {
//        Thread01 thread01 = new Thread01();
//        thread01.start();
        Thread02 thread02 = new Thread02();
        Thread t2 = new Thread(thread02);
        t2.start();

        for (int i = 0; i < 100; i++) {
            System.out.println("mian" + i);
        }
    }
}
class Thread01 extends Thread{
    @Override
    public void run() {
        for (int i = 0; i < 100; i++) {
            System.out.println("Thread01" + i);
        }
    }
}
class Thread02 implements Runnable{

    @Override
    public void run() {
        for (int i = 0; i < 100; i++) {
            System.out.println("Thread02" + i);
        }
    }
}

匿名内部类方式:

/**
 * @author 舒一笑
 * @date 2023/5/24
 */
public class test1 {
    public static void main(String[] args) {
//        Thread01 thread01 = new Thread01();
//        thread01.start();
//        Thread02 thread02 = new Thread02();
//        Thread t2 = new Thread(thread02);
//        t2.start();
//
//        for (int i = 0; i < 100; i++) {
//            System.out.println("mian" + i);
//        }
        Thread t3 = new Thread(new Runnable() {
            @Override
            public void run() {
                for (int i = 0; i < 10; i++) {
                    System.out.println("Thread03" + i);
                }
            }
        });
        t3.start();
    }
}
/**

lambda表达式的方式创建

/**
 * @author 舒一笑
 * @date 2023/5/24
 */
public class test1 {
    public static void main(String[] args) {
//        Thread01 thread01 = new Thread01();
//        thread01.start();
//        Thread02 thread02 = new Thread02();
//        Thread t2 = new Thread(thread02);
//        t2.start();
//
//        for (int i = 0; i < 100; i++) {
//            System.out.println("mian" + i);
//        }
//        Thread t3 = new Thread(new Runnable() {
//            @Override
//            public void run() {
//                for (int i = 0; i < 10; i++) {
//                    System.out.println("Thread03" + i);
//                }
//            }
//        });
        Thread t4 = new Thread(() -> {
            for (int i = 0; i < 100; i++) {
                System.out.println("lambda:" + i);
            }
        });
        t4.start();
    }
}

总结

启动线程是调用start方法,这样会创建一个新的线程,并执行线程的任务。

如果直接调用run方法,这样会让当前线程执行run方法中的业务逻辑。

目录
打赏
0
0
0
0
15
分享
相关文章
ConcurrentHashMap:使用方法和底层原理详解
ConcurrentHashMap:使用方法和底层原理详解
310 1
|
9月前
|
数据结构之 - 双端队列数据结构详解: 从基础到实现
数据结构之 - 双端队列数据结构详解: 从基础到实现
419 5
在 Java 中使用实现 Runnable 接口的方式创建线程
【10月更文挑战第22天】通过以上内容的介绍,相信你已经对在 Java 中如何使用实现 Runnable 接口的方式创建线程有了更深入的了解。在实际应用中,需要根据具体的需求和场景,合理选择线程创建方式,并注意线程安全、同步、通信等相关问题,以确保程序的正确性和稳定性。
322 11
【Freertos基础入门】2个Freertos的Delay函数
【Freertos基础入门】2个Freertos的Delay函数
1338 1
Spring是如何解决循环依赖的?从底层源码入手,详细解读Spring框架的三级缓存
三级缓存是Spring框架里,一个经典的技术点,它很好地解决了循环依赖的问题,也是很多面试中会被问到的问题,本文从源码入手,详细剖析Spring三级缓存的来龙去脉。
356 24
Spring是如何解决循环依赖的?从底层源码入手,详细解读Spring框架的三级缓存
|
9月前
|
深入理解RESTful API设计:最佳实践与实现
【10月更文挑战第9天】深入理解RESTful API设计:最佳实践与实现
459 1
一文教你,synchronized和Lock的区别?
最近有多位粉丝被问到synchronized和Lock,据说还是阿里一面的面试题。在分布式开发中,锁是控制线程的重要方式。Java提供了两种锁机制synchronized 和 Lock。接下来,我给大家分享一下我对synchronized和Lock的理解。
368 0
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等

登录插画

登录以查看您的控制台资源

管理云资源
状态一览
快捷访问