面试题:Thread的start和run的区别

前言

这道题是并发编程关于线程Thread基础的面试题,小伙伴们是不是感觉简单?还是自己一下子蒙了呢?老顾今天来分享一下

先上代码

640?wx_fmt=jpeg


	t.run(); //调用run方法

//调用执行

current main thread is main

task run.....

task thread is : main

换成调用方法t.start(),执行

current main thread is main

task run.....

task thread is : Thread-0

小伙伴们是否已经知道他们的区别了

1、run方法就是个普通的方法,被main线程调用,所以在执行task()方法时,是main线程调用的。

2、start方法被main线程调用,但执行task()方法并不是main线程。

源码分析

知道了run和start的区别,我们来看看start方法源码

640?wx_fmt=jpeg


start方法中调用了本地方法start0,native即是本地方法(也是底层方法)。怎么看start0方法,可以去访问openjdk源码(访问比较慢)。

640?wx_fmt=jpeg


start0映射的方法就是JVM_StartThread,我们再看一下jvm.cpp文件中JVM_StartThread方法,里面有段代码

640?wx_fmt=jpeg


在看下thread_entry方法

640?wx_fmt=jpeg


就是在thread_entry方法中调用run方法

总结

start方法中的基本流程

640?wx_fmt=jpeg


小伙伴们看到这里,是不是感觉这个面试题很简单呢?如果我们能够回答面试官达到源码级别,再弄个流程图,应该会加分吧。不要小看很简单的问题,也许里面有大学问。

业余草
关注 关注
  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java 中级面试题:30题
欢迎拜读我的作品,喜欢的领域请给我留言
08-16 600
操作系统将单个 CPU 上运行大量线程时可用的 CPU 时间划分为小的时间片,并为每个线程提供一个执行的时间片。Java 中的守护线程的优先级低于用户线程,这意味着它们只能在没有用户线程运行时执行。Java 中的线程是轻量级的子进程,是进程的最小单位,并且具有单独的执行路径。这些线程使用共享内存,但它们独立运行,因此,如果线程中出现异常,则不会影响其他线程的工作,尽管它们共享相同的内存。线程有自己的程序计数器、执行堆栈和局部变量,但它与同一进程中的其他线程共享相同的内存空间。此方法不返回任何值。
【start和run区别面试题)及创建线程的五种写法】
m0_64670207的博客
05-06 1058
2.run方法,单纯的描述了该线程要执行什么内容,会在start 创建好线程之后自动被调用的。1.start方法内部,是会调用到系统api,来在系统的内核中创建出线程。调用start 方法,才真的在操作系统的底层创建出一个线程。*调用start方法相当于喊一声命令去执行。lambada表达式是更简化的语法表示方式。Main和run兵分两路,并发执行。相当于“匿名内部类”的代替写法。*线程对象相当于执行任务的人。*run方法相当于执行清单。
Java Thread中start()和run()的区别_动力节点Java学院整理
08-30
start() : 它的作用是启动一个新线程,新线程会执行相应的run()方法。start()不能被重复调用。而run() : run()就和普通的成员方法一样,可以被重复调用。下面通过示例代码给大家介绍了Java Thread中start()和run()的区别,感兴趣的朋友一起看看吧
深入详解 C# 中的 Task.RunThread区别与联系
最新发布
martian665的专栏
08-31 1624
深入详解 C# 中的 Task.RunThread区别与联系
Thread的Start和Run方法区别详解
thaddeuslu的博客
09-26 1210
Thread的Start和Run方法区别功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入 创建线程的两种方式,继承Thr...
thread中start和run方法的区别
xuyuanshu123的博客
03-17 183
认识Thread的start和run 1) start: 用 start方法来启动线程,真正实现了多线程运行,这时无需等待run方法体代码执行完毕而直接继续执行下面的代码。通过调用Thread类的 start()方法来启动一个线程,这时此线程处于就绪(可运行)状态,并没有运行,一旦得到cpu时间片,就开始执行run()方法,这里方法 run()称为线程体,它包含了要执行的这个线程的内容,Ru...
Thread.start 和run区别
xiangkezhu的博客
04-04 273
thread.start()是启动线程,使线程进入就绪状态,启动一个新线程,在新线程中执行run方法;调用start()方法后,,可以继续执行下面的代码; runthread中的一个方法,调用thread.run()后,需要等待run方法执行完毕后才能执行后面的代码,不会启动一个新线程,还是在本线程中执行; ...
Thread类中run和start的区别
tl2267190799的博客
03-07 1497
Thread类中run和start的区别
JAVA面试题 start()和run()详解
08-25
"JAVA面试题 start()和run()详解" 本文主要介绍了JAVA面试题中关于启动线程的start()和run()方法的详解。通过示例代码,详细介绍了这两个方法的作用和区别,以及它们在启动线程时的执行过程。 第一点,start()方法...
面试题:Java中如何停止线程的方法
08-25
Java 中停止线程的方法是 Java 并发面试中的常见问题,这篇文章将从答题思路到答题细节给出一些参考。 答题思路:停止线程的正确方式是使用中断。想停止线程需要停止方和被停止方的子方法相互配合扩展。正确方式是...
Java面试题:线程专题
wyz_1945的博客
01-28 830
一个分享硬核Java技术的互金摸鱼侠平时我在网上冲浪的时候,收集了不少八股文和面试文,内容虽然多,但质量上良莠不齐,主打一个不假思索的互相抄,使得很多错误内容一代代得“传承”了下来。所以,我对收集的内容做了归纳和整理,通过查阅资料重新做了解答,并给出了每道八股文评分。这部分是并发编程中的基础概念和理论基础,整体难度较低,并且当你有了一定的工作年限后,很少会涉及这类问题,大家以了解为主。:🔥:🔥:无。
Java 多线程(致命)面试题:线程锁+线程池+线程同步等
m0_68850571的博客
05-26 1307
1、并发编程三要素? 1)原子性 原子性指的是一个或者多个操作,要么全部执行并且在执行的过程中不被其他操作打断,要么就全部都不执行。 2)可见性 可见性指多个线程操作一个共享变量时,其中一个线程对变量进行修改后,其他线程可以立即看到修改的结果。 实现可见性的方法: synchronized 或者 Lock:保证同一个时刻只有一个线程获取锁执行代码,锁释放之前把最新的值刷新到主内存,实现可见性。 3)有序性 有序性,即程序的执行顺序按照代码的先后顺序来执行。 2、多线程的价值? 1...
3.Thread中start()和run()的区别
weixin_30345055的博客
02-21 69
start() 和 run()的区别说明 start(): 它的作用是启动一个新线程,新线程会执行相应的run()方法。start()不能被重复调用。run() : run()就和普通的成员方法一样,可以被重复调用。单独调用run()的话,会在当前线程中执行run(),而并不会启动新线程! class MyThread extends Thread{ public vo...
thread.start java_java中thread的start()和run()有何区别
weixin_42177768的博客
02-13 153
展开全部1,start()方法来启动线程,真正实现了多线程运行,这时无需等待。run方法体代码执行完32313133353236313431303231363533e59b9ee7ad9431333431336130毕而直接继续执行下面的代码: 通过调用Thread类的start()方法来启动一个线程,这时此线程是处于就绪状态,并没有运行。然后通过此Thread类调用方法run()来完成其运行操作...
Thread中start与run区别
weixin_43919497的博客
05-10 409
start表示启动线程,run只是执行线程体中的run方法并没有启动线程。 run方法 示例如下: @Slf4j public class TestStartAndRun { public static void main(String[] args) throws InterruptedException { Thread thread = new Thread() { @Override public void run() {
Thread类的start()和run()的区别
weixin_43283363的博客
06-06 692
先给结论: start()属于Thread本身,run()方法实现于Runnable接口; 调用start()方法时会调用native的start0()方法,启用一个线程,在获取到CPU时间片时调用run()方法;直接调用run()方法,仅仅是普通方法调用,并不会启用线程; start()方法是启用一个线程,所以不会阻塞调用它的线程;run()方法不会启用线程,所以会阻塞调用它的线程,直至run()方法体执行结束; run()方法一般可以被多次调用,start()是synchronized修
Thread中start()和run()的区别
03-25 1159
Thread类包含start()和run()方法,它们的区别是什么?本章将对此作出解答。本章内容包括: start() 和 run()的区别说明 start() 和 run()的区别示例 start() 和 run()相关源码(基于JDK1.7.0_40) start() 和 run()的区别说明 start() : 它的作用是启动一个新线程,新线程会执行相应的run()方法
Java面试必备:128道高频面试题解析
"这是一份精选的Java面试题集,包含了128个高频率出现的面试问题,涉及Java集合、并发、线程、类库等多个方面。" 在Java编程领域,掌握好基础知识对于面试和实际工作都至关重要。这份文档提到了几个关键的知识点: ...
写文章

热门文章

  • jqm视频播放器,html5视频播放器,html5音乐播放器,html5播放器,video开发demo,html5视频播放示例,html5手机视频播放器 110694
  • input中加入图片的做法 61769
  • CentOS 停止更新维护,天下没有免费且不散的宴席! 45618
  • nginx配置详解 33266
  • 叫号系统排队系统挂号系统实现(JAVA队列) 30809

分类专栏

  • Java面试题大全 付费 20篇
  • java视频教程免费下载 15篇
  • java web高级开发 31篇
  • Lua从入门到放弃
  • 程序员视角 6篇
  • jQuery Mobile开发详解 17篇
  • SpringMVC 5篇
  • Log4j 2.x版本学习 7篇
  • Spring Cloud 12篇
  • java 109篇
  • android 6篇
  • C++ 3篇
  • JavaScript 13篇
  • Jsp 12篇
  • html 18篇
  • extjs 5篇
  • 版本控制工具 2篇
  • svn 1篇
  • cvs 1篇
  • git 2篇
  • TCP 1篇
  • Socket 1篇
  • Mina 1篇
  • 通讯 3篇
  • 管理方面 8篇
  • tomcat 1篇
  • 服务器 5篇
  • linux 6篇
  • html5 43篇
  • ant 1篇
  • sql语句 6篇
  • vb脚本 1篇
  • 程序员视角 24篇
  • 其他 31篇
  • 区块链 3篇
  • 开源项目 7篇
  • 高通开发板
  • spring 14篇
  • springcloud 17篇
  • springboot 6篇
  • Hadoop 2篇
  • hive 1篇
  • PHP 1篇
  • 视频教程 18篇
  • GO
  • spark 1篇
  • 自学编程 28篇
  • 公众号 27篇
  • 业余草 26篇

最新评论

  • Java 必会10大的经典算法

    三郎不敲代码: 动图做的很形象,容易理解。很棒的分享表情包

  • 多租户 Saas 系统架构的设计思路

    小白学代码。。。: 👍👍👍

  • 阿里面试题:一个 String 字符串占多少内存?

    维摩VimalaEric: 从前有一头驴叫小夏,她爱上一匹骏马叫bb。 俩人热恋时遇到了一个麻烦,那就是接吻怎么都接不上,为啥呢? 因为驴唇不对马嘴。只能夏bb。表情包

  • 血一般的教训,同事误用insert into select造成公司损失100万

    JW202244021412: 表情包表情包表情包我说今天mysql写了一个insert select的触发器,就插入数据失败了,原来不是数据直接复制粘贴,而是给表加速进行迁移的。问问insert valuse就是直接复制粘贴的吗?

  • 干掉activity、flowable,阿里开源工作流引擎compileflow使用指南

    111swsqwswqd323: 完全是抄袭啊表情包

大家在看

  • springmvc源码流程解析(一)
  • 中英双语酒店管理系统——pms系统,海外版
  • 论文 Python 实现WOA-CNN-BiGRU-Attention数据分类预测 64

最新文章

  • 2023ChatGPT整理回答的Java高级工程师面试题
  • 2023年最火的Java面试题
  • 2023最新ChatGPT整理的40道Java高级面试题
2023年3篇
2022年1篇
2021年298篇
2020年402篇
2019年235篇
2018年60篇
2017年40篇
2016年21篇
2015年43篇
2014年71篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值

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

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