【多线程】run和start的区别

博客围绕Java多线程展开,介绍了start()和run()方法。start()用于启动新线程,调用run()方法,不可重复调用,启动线程有异步效果;run()类似普通方法,单独调用在当前线程启用,启动线程是同步的,还给出了代码示例及打印结果。

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

文章目录

概述

  1. Start()是启动一个新的线程,然后新的线程会调用run()方法,但是start()方法不可以重复调用,若会出现异常Exception in Thread “main” java.lang.IllegalThreadStateException.而且启动线程,会出现异步的效果,即线程创建和启动是随机的
  2. run()方法类似一个一个普通方法,如果单独调用,仅仅会在当前线程启用,不会重新启动新的线程。启动线程是同步的。

代码示例

package RunandStart;
public class MyThread  extends Thread{
    public MyThread(String name){
        super(name);
    }
    @Override
    public  void run(){
        System.out.println(Thread.currentThread().getName()+" is running");
    }
}

package RunandStart;

public class Run {
    public static void main(String[] args) {
        Thread mythead=new MyThread("Mythread");
        //此时启动的线程是main线程
        System.out.println(Thread.currentThread().getName()+"  call mythread.run()");
        //仅仅是调用mythead的run方法,不是重新启动新线程
        mythead.run();
        //此时的线程仍然是main线程
        System.out.println(Thread.currentThread().getName()+"  call mythread.start()");
        //启动新的线程
        mythead.start();

    }
}

打印结果

main call mythread.run()
main is running
main call mythread.start()
Mythread is running

评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值