Appearance
线程调用2次start会怎样
各种各样五花八门的面试题让你防不胜防! 今天一个5年经验的小伙伴去面试被问到:
线程调用2次start****会怎样, 直接就没答上来, 这没做过啊! 谁有事没事调用2次start()。
哈喽大家好!我是徐庶, 如果有打算面试的同学, 我这里有一份80万字面试题资料, 各种你没见过的面试题都总结在里面 ,需要的小伙伴在评论区扣666.
我们知道 , 虽然很多八股文面试题中说Java创建线程的方式有3种、4种,或者更多种,但实际上他们底层都是new Thread()
那当创建完一个Thread,这时线程处于NEW状态,那这时调用start()方法,会让线程进入到RUNNABLE状态。
那如果在RUNNABLE的线程再次调用start呢****?其实就会 线程状态的异常。
那面试官接着问, 为什么会报错呢? 这个时候很多人想楱面试官, 其实没什么这么多为什么, 就是底层源码在调用start()方法的时候 针对状态做了判断, 如果不是NEW状态就会报线程状态的异常。
那面试官接着继续问! 如果线程执行完,再调用一次start又会怎么样**? 那线程运行完会进入TERMINATED状态! 也不是NEW状态! **所以肯定也是报错啊!
所以这个面试题说白了就是另一种线程状态的考核方式, 你要知道线程有几种状态, 只要知道线程只能是刚NEW 出来的才可以start(); 记住了没有!
如果看完有帮助那还是得给徐庶老师一个三连哈, 这样我才有继续更新的动力!
更新: 2024-06-03 15:51:16
原文: https://www.yuque.com/tulingzhouyu/db22bv/nzzn4r5i0q20gemp