买空间哪个网站好,xml网站地图制作,wordpress 图片备份,国外产品推广平台(/≧▽≦)/~┴┴ 嗨~我叫小奥 ✨✨✨ #x1f440;#x1f440;#x1f440; 个人博客#xff1a;小奥的博客 #x1f44d;#x1f44d;#x1f44d;#xff1a;个人CSDN ⭐️⭐️⭐️#xff1a;传送门 #x1f379; 本人24应届生一枚#xff0c;技术和水平有限 个人博客小奥的博客 个人CSDN ⭐️⭐️⭐️传送门 本人24应届生一枚技术和水平有限如果文章中有不正确的内容欢迎多多指正 欢迎点赞收藏关注哟 ❤️ 文章目录 Java创建线程的方式可以直接调用run方法来启动线程吗 Java创建线程的方式
在面试中我们会被经常问道“ Java中的线程创建有几种方式 ”
这是一道很经典的八股文了当然对于我们来说不在话下答“三种继承Thread类、实现Runnable接口、实现Callable接口”。
是不是很简单确实但是你以为只有这三种方式吗哈哈那可不一定。
像一些其他的线程池啊CompletableFuture类等也都可以创建出线程。
不过这些方式呢其实并没有真正的创建出线程。
准确来说这些都是属于在Java代码中使用多线程的不同方式。
严格来说Java只有一种方式可以创建线程就是通过new Thread().start()创建。
其实这样我们就能明白以上的很多方式其实底层都是通过new 来创建线程的并且提供给用户使用。
关于这个问题我们可以看这篇文章其中有着很详细的解释
大家都说Java有三种创建线程的方式并发编程中的惊天骗局
可以直接调用run方法来启动线程吗
这也是一个非常经典的面试题很简单但是会有很多小伙伴说不清楚其中的原理。
博主也在面试中遇到过不过好在磕磕巴巴糊弄过去了但是本着求知的态度还是和大家一起学习下。
new Thread() 后线程进入了新建状态。
调用start() 方法会启动一个线程并且使线程进入了就绪状态当分配到时间片之后就可以开始运行了。
start() 会执行线程的相应准备工作然后自动执行 run()方法下的内容这才是线程真正开始工作的过程。
如果直接执行run()方法会把run()方法当成一个main线程下的普通方法去执行并且不会在某个线程中执行它。
更加具体的解析可以看如下文章
为什么start方法会调用run方法?(为什么不能直接run来实现创建线程