java线程之r.run()和t.start()区别

1、r.run()根本就没有新启线程,仍然是一个主线程,只有Runnable实现类的run()方法执行完毕之后,才会执行主线程的剩余逻辑。

2、t.start()才是启动了新线程,主线程可以继续执行自己的逻辑,同时子线程也开始执行子线程自己的逻辑。

3、例子:

public class Test {


    public static void main(String[] args) {
        test1();

        try {
            Thread.sleep(4000);
            System.out.println("============");
        } catch (InterruptedException e) {
            e.printStackTrace();
        }

        test2();

    }


    private static void test1(){
        System.out.println("test1()方法执行start-----");

        Runnable r = new Runnable() {
            @Override
            public void run() {
                try {
                    Thread.sleep(3000);
                    System.out.println("test1 - Runnable.run()方法执行-----");
                }catch (InterruptedException e){
                    e.printStackTrace();
                }
            }
        };

        r.run();

        System.out.println("test1()方法执行end-----");

    }

    private static void test2(){
        System.out.println("test2()方法执行start-----");

        Runnable r = new Runnable() {
            @Override
            public void run() {
                try {
                    Thread.sleep(3000);
                    System.out.println("test2 - Runnable.run()方法执行-----");
                }catch (InterruptedException e){
                    e.printStackTrace();
                }
            }
        };

        Thread t = new Thread(r);
        t.start();

        System.out.println("test2()方法执行end-----");

    }
}

打印结果:

test1()方法执行start-----
test1 - Runnable.run()方法执行-----
test1()方法执行end-----
============
test2()方法执行start-----
test2()方法执行end-----
test2 - Runnable.run()方法执行-----

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 本文主要讲了java中多线程的使用方法、线程同步、线程数据传递、线程状态及相应的一些线程函数用法、概述等。 首先讲...
    李欣阳阅读 2,574评论 1 15
  • Java多线程学习 [-] 一扩展javalangThread类 二实现javalangRunnable接口 三T...
    影驰阅读 3,089评论 1 18
  • 一、线程的生命周期 线程状态转换图: 1、新建状态 用new关键字和Thread类或其子类建立一个线程对象后,该线...
    我是嘻哈大哥阅读 1,003评论 0 8
  • 你好七月,新的开始,新的征程,我们将一如既往的前行,不忘初心,相信自己能创造新的奇迹!!
    水之柔阅读 225评论 0 1
  • 生而苟且,活在当下,无梦相依又何必远方。 初来厦门的时候,具有强烈的憧憬。虽然身为离厦门不到百公里小城的人,以往也...
    大乌_阅读 7,519评论 78 255

友情链接更多精彩内容