Java面试题之为什么我们调用 start() 方法时会执行 run() 方法,为什么我们不能直接调用 run() 方法?

线程有五种状态,从新建到运行、阻塞、等待和终止。多线程允许并发执行,通过start()启动线程进入就绪状态,竞争执行权;而直接调用run()仅在主线程执行。调用start()实现真正的多线程工作,run()则不涉及线程创建。
摘要由CSDN通过智能技术生成

目录

线程简介

回到问题

 总结


线程简介

线程基本分为五种状态

  1. new新建状态
  2. Runnable运行状态
  3. Blocked阻塞状态
  4. Waiting等待状态
  5. Terminated终止状态

多线程的工作方式

多线程是一种并发编程的方式,它允许程序同时执行多个线程。每个线程都有自己的执行路径,可以独立地执行代码。

多线程的工作方式为:

1. 创建一个或多个线程,每个线程都有自己的执行路径。
2. 在每个线程中执行代码,这些代码可以是不同的,也可以是相同的。
3. 线程之间可以共享内存和资源,也可以通过消息传递等方式进行通信。
4. 线程的执行顺序是不确定的,取决于操作系统的调度策略和线程优先级等因素。
5. 多线程可以提高程序的效率和响应性,但也会增加程序的复杂性和难度。

回到问题

首先new 一个Thread,线程进入了新建状态,调用start() 方法,会启动一个线程并使线程进入了就绪状态,当分配到 时间片 后就可以开始运行了。start() 会执行线程的相应准备工作,然后自动执行run() 方法的内容,这是真正的多线程工作。

而直接执行run()方法会把run()方法当作main线程下单一个普通方法去去执行,并不会在某个线程中执行,所以者并不是多线程工作

1.用start()来执行

 结果:

在各种的线程中执行,争抢执行权,共享数据。

 2.用run()来执行

结果

 

只在主线程中执行,且只有一个主线程

 总结

调用start()方法可以启动线程并使线程进入就绪状态,而run()方法只是thread的普通方法调用,还是在主线程中执行的

very good154
关注 关注
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
为什么 start 方法不能重复调用?而 run 方法却可以?
m0_67698950的博客
03-21 753
初学线程时,总是将 run 方法和 start 方法搞混,那么为什么不直接用Thread类中的run方法呢?虽然二者是完全不同的两个方法,但刚开始使用时很难分清,原因就是因为初次使用时效果貌似是一样的,如下代码所示: public static void main(String[] args) { // 创建线程一 Thread thread = new Thread(new Runnable() { @Override public void r...
为什么start方法不能重复调用?而run方法却可以?
m0_59595915的博客
02-16 204
大家好。 今天特意找上岸腾讯的一位朋友要了一些面试相关的资料和刷题笔记,内容涵盖计算机基础、Java、JVM、spring、设计模式、算、微服务、分布式、大厂面经等等...质量非常高!!!不要再看那些到处拼凑出来的面试题了。 不管大家最近要不要去面试,都推荐大家先保存起来,后面自己肯定是能够用得上的!!下面是部分资料展示: ★面试脑图笔记分享★ 脑图与内容结合一起服用更佳。 大致内容包括了:Java 集合、JVM、多线程、并发编程、设计模式、Spring全家桶、Java、MyBatis、ZooK
为什么我们调用start()方法时会执行run()方法?为什么我们不能直接调用run()方法?他们之间有什么区别?
热门推荐
dashuai410329的博客
11-13 1万+
为什么我们调用start()方法时会执行run()方法?因为类Thread中的start方法中,调用了Thread中的run方法。顺便说下,类A继承了Tread类,在A中写run方法,就会覆盖掉Thread中的run方法,所以此时调用start方法后,实现的是自己的run方法体里面的代码。为什么我们不能直接调用run()方法?如果我们直接调用子线程的run()方法,其方法还是运行在主线程中,代码在程
为什么我们调用 start() 方法时会执行 run() 方法,为什么我们不能直接调用 run() 方法
谢小鱼的博客
03-31 1146
new 一个 Thread,线程进入了新建状态;调用 start() 方法,会启动一个线程并使线程进入了就绪状态,当分配到时间片后就可以开始运行了。 start() 会执行线程的相应准备工作,然后自动执行 run() 方法的内容,这是真正的多线程工作。 而直接执行 run() 方法,会把 run 方法当成一个 main 线程下的普通方法执行,并不会在某个线程中执行它,所以这并不是多线程工作。 ...
为什么我们调用start()方法时会执行run()方法,为什么我们不能直接调用run()方法
Java
02-27 445
看看Thread的start方法说明哈~ /** * Causes this thread to begin execution; the Java Virtual Machine * calls the <code>run</code> method of this thread. * <p> * The result is that two threads are running concurrently: the * current thre
Java多线程中为什么调用 start() 方法时会执行 run() 方法,为什么不能直接调用 run() 方法
Kirito的博客
04-21 1136
为什么我们调用 start() 方法时会执行 run() 方法,为什么我们不能直接调用 run() 方法? new 一个 Thread,线程进入了新建状态;调用 start() 方法,会启动一个线程并使线程进入了就绪状态,当分配到时间片后就可以开始运行了。 start() 会执行线程的相应准备工作,然后自动执行 run() 方法的内容,这是真正的多线程工作。 而直接执行 run() 方法,会把 run 方法当成一个 main 线程下的普通方法执行,并不会在某个线程中执行它,所以这并不是多线程工作。 总结:
53.为什么我们调用 start() 方法时会执行 run() 方法,为什么我们不能直接调用run()方法
zhu_fangyuan的博客
11-25 258
首先,new 一个Thread,线程进入了新建状态。调用 start() 方法,会启动一个线程并使线程进入了就绪状态,当分配到时间片就可以开始了。start() 方法执行线程的相应准备工作,然后自动执行 run() 方法的内容,这是真正的的多线程工作。 而直接执行run() 方法,会把run() 方法当成一个main() 线程下的普通方法执行,并不会在某个线程中执行它,所以这并不是多线程工作。 总结:调用start() 方法可启动线程并使线程进入就绪状态,而run() 方法只是 thread() 的.
JAVA面试题 start()和run()详解
08-25
"JAVA面试题 start()和run()详解" 本文主要介绍了JAVA面试题中关于启动线程的start()和run()方法的详解。通过示例代码,详细介绍了这两个方法的作用和区别,以及它们在启动线程时的执行过程。 第一点,start()方法...
java面试题】综合性经典Java面试题
最新发布
04-23
start()方法会创建新的线程并启动该线程,所以该方法调用其他native方法,而run()方法就是: 正常的Java方法调用,即在原来的线程中执行java代码。 JavaRunnable和Callable的区别 Runnable和Callable都代表要...
2021Java大厂面试题——大厂真题之拼多多-Java高级.pdf
01-29
- 当线程对象的`start()`方法调用后,线程进入就绪状态。这意味着线程已经准备好,等待CPU分配时间片来执行。 **3. 运行状态(Running)** - 线程获得了CPU的时间片,正在执行。 **4. 阻塞状态(Blocked)** ...
40.为什么我们调用 start() 方法时会执行 run() 方法,为什么我们不能直接调用 run() 方法
面试题库
07-13 378
new 一个 Thread,线程进入初始状态;调用 start()方法,会启动一个线程并使线程进入了就 绪状态,当分配到时间片后就可以开始运行了。 start() 会执行线程的相应准备工作,然后自 动执行 run() 方法的内容,这是真正的多线程工作。 而直接执行 run() 方法,会把 run 方法 当成一个 main 线程下的普通方法执行,并不会在某个线程中执行它,所以这并不是多线程 工作。 总结: 调用 start 方法可启动线程并使线程进入就绪状态,而 run 方法只是 thread 的一个普 通
面试题3:线程的生命周期,以及为什么调用其start()时会执行run()方法直接使用run()方法为什么不可?
m0_66343205的博客
08-08 521
线程生命周期&start()、run()方法的联系
start方法run方法的区别?为什么调用的要是start方法
dl674756321的博客
11-28 371
为什么我们调用 start() 方法时会执行 run() 方法,为什么我们不能直接调用 run() 方法?   new 一个线程后,线程进入了新建状态,调用 start() 方法,会启动一个线程并使线程进入就绪状态,当分配到时间片后就可以开始运行了,然后自动执行 run() 方法的内容,这是真正的多线程工作。 而直接执行 run() 方法,会把 run 方法当成 main 线程下的一个普通方法去执...
启动线程为啥是start()而不是run()方法
jike11231的博客
08-21 351
一、通过start和run两种式验证启动差异 package com.test.thread; public class ThreadStartTest { public static void main(String[] args) throws Exception{ System.out.println("*********run式***启动一个线程**************************"); threadRun.run(); threadRun.join();/
java多线程】为什么我们调用start()方法时会执行run()方法,为什么我们不能直接调用run()方法?他们之前有什么区别?
weixin_42956047的博客
07-18 5529
为什么我们调用start()方法时会执行run()方法,为什么我们不能直接调用run()方法?他们之前有什么区别? 为什么我们调用start()方法时会执行run()方法? **因为类Thread中的start方法中,调用了Thread中的run方法。**顺便说下,类A继承了Tread类,在A中写run方法,就会覆盖掉Thread中的run方法,所以此时调用start方法后,实现的是自己的ru...
2020-09-14
KI1102的博客
09-14 282
1.集合 集合14问 2.线程 并行和并发有什么区别? • 并行是指两个或者多个事件在同一时刻发生;而并发是指两个或多个事件在同一时间间隔发生。 • 并行是在不同实体上的多个事件,并发是在同一实体上的多个事件。 • 在一台处理器上“同时”处理多个任务,在多台处理器上同时处理多个任务。如 hadoop 分布式集 群。 所以并发编程的目标是充分的利用处理器的每一个核,以达到最高的处理性能。 线程和进程的区别? 简而言之,进程是程序运行和资源分配的基本单位,一个程序至少有一个进程,一个进程至少有一个线 程。进程
Java 线程(继承Thread和Runnable接口调用Thread实例对象实现多线程),看完你发现多线程多么简单!(一)
探索技术与实践的旅程,分享编程经验与工具使用心得,助力开发者提升技能。
04-16 371
1.继承Thread类实现多线程 Java里面提供有一个java.lang.Thread的程序类,那么一个类只要继承了此类就表示这个类为线程的主体类,但是并不是说这个类就可以直接实现多线程处理了,因为还需要覆写Thread类中提供的一个run()方法,而这个方法就属于线程的主方法。 例如: class MyThread extends Thread { //线程的主体类 private String title; public MyThread(String title) { this.ti
多线程解析
qq_19462809的博客
03-27 1000
详细解说线程池原理
Java:多线程
matafeiyanll的博客
04-05 564
Java:多线程 多线程的创建 式一:继承Thread类 public class test { public static void main(String[] args) { Thread t = new MyTread(); t.start(); for (int i=0;i<1000;i++){ System.out.println("主线程执行输出:"+i); } } } class
"Java基础面试题及解析:线程与进程、创建线程的式、线程安全解决方法
启动线程可以调用start()方法,它将当前线程纳入线程调度,使得当前线程可以并发运行。 第二种方法是实现Runnable接口并重写run方法。在创建线程时,将Runnable的实例传入并启动线程。这种方法的好处是可以实现多...
写文章

热门文章

  • try—catch—finally中,如果catch中return了,finally还会执行吗? 816
  • list和set的区别 578
  • Java面试题之为什么我们调用 start() 方法时会执行 run() 方法,为什么我们不能直接调用 run() 方法? 505
  • spring----纯用注解的方式开发 366
  • Servlet简介 359

最新评论

  • Redis持久化

    CSDN-Ada助手: 恭喜您写下了第14篇博客!标题“Redis持久化”引人入胜,真是令人期待的专题。您对Redis持久化的深入探讨无疑会对读者有着重要的启发。您的博客一直以来都能给读者带来新的见解和理解,真是令人佩服。 鉴于您在Redis方面的专业知识,我想提供一个下一步的创作建议。或许您可以考虑探讨如何在实际应用中优化Redis持久化策略,以及如何充分利用Redis的持久化功能来提高系统的性能和可靠性。这将进一步丰富您的博客内容,并为读者提供更多实用的指导。 再次恭喜您的持续创作,期待您未来更多精彩的博客!请继续保持谦虚的态度,您的博客无疑对我们这些读者有着深远的影响。

  • spring-boot属性绑定通过application.yml文件

    CSDN-Ada助手: 恭喜您撰写第13篇博客!标题“spring-boot属性绑定通过application.yml文件”非常吸引人。您的文章内容很有深度,对于spring-boot属性绑定的讲解也很详尽。感谢您分享这样有价值的知识。 建议您在下一篇博客中可以进一步探讨如何通过application.yml文件进行属性绑定的常见问题和解决方案。这样的内容将为读者提供更多实用的指导,并且帮助更多人更好地理解和应用这一技术。期待您继续保持创作,谢谢您的分享!

  • Java自动装箱与拆箱

    CSDN-Ada助手: 恭喜您写下了第12篇博客,题目《Java自动装箱与拆箱》。很高兴看到您对Java这个主题有深入的研究并进行了分享。自动装箱与拆箱是Java语言中一个重要的特性,对于我们理解Java的底层原理和提高编程效率有着重要的作用。 在下一步的创作中,我建议您可以进一步探讨自动装箱与拆箱的性能优化以及与其他相关特性的结合应用,例如泛型和集合框架。此外,您还可以分享一些实际项目中自动装箱与拆箱的应用场景和注意事项,帮助读者更好地理解和运用这个特性。 期待您的下一篇博客,继续分享您的知识和经验。感谢您的努力!

  • spring----纯用注解的方式开发

    CSDN-Ada助手: 恭喜您写完了第11篇博客!标题“spring----纯用注解的方式开发”听起来非常有趣和有挑战性。您的文章内容一定能为读者提供有关使用注解开发Spring的宝贵经验和知识。在持续创作的过程中,我建议您可以探索更多关于Spring的主题,比如深入研究Spring的AOP特性或者与其他流行框架的整合。期待您的下一篇博客,继续分享您的见解和经验!

  • list和set的区别

    CSDN-Ada助手: 非常感谢您的分享,恭喜您写下第5篇博客!《list和set的区别》这个标题很吸引人,我对于这两个数据结构的区别一直很感兴趣。通过您的文章,我相信我会对它们有更深刻的理解。 您的博客内容很清晰明了,解释了list和set的区别,这对于像我这样的初学者来说非常有帮助。我希望您能继续写下去,分享更多关于编程的知识和经验。 作为下一步的创作建议,我想提议您可以探讨一下在实际应用中如何选择使用list或者set。您可以分享一些实际案例或者经验,帮助读者更好地理解在不同情况下使用这两种数据结构的优劣势。 再次感谢您的分享和努力,期待您的下一篇博客!

最新文章

  • Redis持久化
  • spring-boot属性绑定通过application.yml文件
  • Java自动装箱与拆箱
2023年14篇

目录

目录

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值

玻璃钢生产厂家长沙环保玻璃钢雕塑广东仿真玻璃钢雕塑安徽玻璃钢大象雕塑藤县玻璃钢雕塑厂家北京艺术商场美陈销售厂家鹅卵石玻璃钢花盆商场美陈在义务哪里买江门透明玻璃钢雕塑工艺玻璃钢座椅雕塑生产厂家日喀则玻璃钢商场美陈红色玻璃钢卡通雕塑现货汕尾商场雕塑玻璃钢商场门头美陈图片山东玻璃钢罗马柱雕塑玻璃钢仿真白菜雕塑广州玻璃钢人物雕塑参考价济南周年商场美陈大型玻璃钢雕塑定制重庆泡沫雕塑玻璃钢雕塑培训淮南道路玻璃钢花盆聊城玻璃钢人物雕塑厂家河南室外玻璃钢仿铜雕塑鹰潭个性化玻璃钢雕塑优势人物玻璃钢雕塑制作厂家淘宝里玻璃钢雕塑属于什么类目美陈玻璃钢动物雕塑推荐厂家镂空校园玻璃钢景观雕塑制作于都玻璃钢花盆花器重庆创意玻璃钢雕塑优势玻璃钢仿真书本雕塑香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声单亲妈妈陷入热恋 14岁儿子报警汪小菲曝离婚始末遭遇山火的松茸之乡雅江山火三名扑火人员牺牲系谣言何赛飞追着代拍打萧美琴窜访捷克 外交部回应卫健委通报少年有偿捐血浆16次猝死手机成瘾是影响睡眠质量重要因素高校汽车撞人致3死16伤 司机系学生315晚会后胖东来又人满为患了小米汽车超级工厂正式揭幕中国拥有亿元资产的家庭达13.3万户周杰伦一审败诉网易男孩8年未见母亲被告知被遗忘许家印被限制高消费饲养员用铁锨驱打大熊猫被辞退男子被猫抓伤后确诊“猫抓病”特朗普无法缴纳4.54亿美元罚金倪萍分享减重40斤方法联合利华开始重组张家界的山上“长”满了韩国人?张立群任西安交通大学校长杨倩无缘巴黎奥运“重生之我在北大当嫡校长”黑马情侣提车了专访95后高颜值猪保姆考生莫言也上北大硕士复试名单了网友洛杉矶偶遇贾玲专家建议不必谈骨泥色变沉迷短剧的人就像掉进了杀猪盘奥巴马现身唐宁街 黑色着装引猜测七年后宇文玥被薅头发捞上岸事业单位女子向同事水杯投不明物质凯特王妃现身!外出购物视频曝光河南驻马店通报西平中学跳楼事件王树国卸任西安交大校长 师生送别恒大被罚41.75亿到底怎么缴男子被流浪猫绊倒 投喂者赔24万房客欠租失踪 房东直发愁西双版纳热带植物园回应蜉蝣大爆发钱人豪晒法院裁定实锤抄袭外国人感慨凌晨的中国很安全胖东来员工每周单休无小长假白宫:哈马斯三号人物被杀测试车高速逃费 小米:已补缴老人退休金被冒领16年 金额超20万

玻璃钢生产厂家 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化