线程start()和run()方法的区别?

本文深入探讨了Java多线程编程中start()与run()方法的区别,通过生动的例子说明了两者的执行时机与效果差异。start()方法用于启动线程,而run()方法则直接在当前线程中执行,文章还提供了代码示例进行对比。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

start()  是让程序中间觉得什么时候去执行

{

妈妈说:start倒垃圾去

start说:等会去,

第二天才去

}

run() 程序运行到他啦就立刻去执行

{

老婆说:run倒垃圾去

run说:好嘞,

立刻就去了

}

 

 

import org.junit.Test;

/*
 *多线程编程的两种方式
 *
 *  继承Thread(本类使用的方法)
 *  实现Runnable接口
 *
 * */
public class MyThread extends Thread {
    public void run() {
        System.out.println("创建的线程");
    }

    /*
     * 如果直接执行run方法是同步(主线程调用),start方法是让系统来找一个时间来调用run方法(子线程调用)
     * 使用run的方法就可以不要用让线程睡一秒钟了
     * 使用start的方法,如果不让线程睡上一秒,输出的结果则会为零.....
     * 下面的三个类是最好的证明
     */
    @Test
    public void test() throws InterruptedException {
        MyThread myThread = new MyThread();
        myThread.start();
        System.out.println("代码的执行结果与代码的顺序无关");
        Thread.sleep(1000);

    }

    @Test
    public void test1() {
        MyThread myThread = new MyThread();
        myThread.run();
        System.out.println("如果是直接执行run方法,肯定是按代码顺序执行的,因为是通过主线程调用的");
    }
}

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值