start和run的区别(面试题)

第一个区别:调用start方法是开启一个新线程来执行,调用run方法是执行普通方法run,不开启新的线程

第二个区别:run方法又名线程体,里面包含具体要执行的业务代码,当调用时,如果当前线程时间片没有用完,会立刻执行run方法里的代码;而调用start方法时,是启动一个线程并把线程状态设置为就绪状态,并不会立即执行

第三个区别:run方法可以反复调用。start只能调用一次

扩展:为何start不能被反复调用?

        当调用第一个start方法后,线程状态会从新建(new)状态变成就绪(runnable)状态,此时再次调用时,jvm就会判断当前线程已不在新建状态,所以会抛出异常(ThreadStateException 非法线程状态异常)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值