java线程中start()和run()的区别

start()
用 start方法来启动线程,是真正实现了多线程, 通过调用Thread类的start()方法来启动一个线程,这时此线程处于就绪(可运行)状态,并没有运行,一旦得到cpu时间片,就开始执行run()方法。但要注意的是,此时无需等待run()方法执行完毕,即可继续执行下面的代码。所以run()方法并没有实现多线程。

run()
run()方法只是类的一个普通方法而已,如果直接调用Run方法,程序中依然只有主线程这一个线程,其程序执行路径还是只有一条,还是要顺序执行,还是要等待run方法体执行完毕后才可继续执行下面的代码。

区别
1、线程中的start()方法和run()方法的主要区别在于,当程序调用start()方法,将会创建一个新线程去执行run()方法中的代码。但是如果直接调用run()方法的话,会直接在当前线程中执行run()中的代码,注意,这里不会创建新线程。这样run()就像一个普通方法一样。

2、另外当一个线程启动之后,不能重复调用start(),否则会报IllegalStateException异常。但是可以重复调用run()方法。

总结起来就是run()就是一个普通的方法,而start()会创建一个新线程去执行run()的代码。

还有:
1、start方法用来启动相应的线程;

2、run方法只是thread的一个普通方法,在主线程里执行;

3、需要并行处理的代码放在run方法中,start方法启动线程后自动调用run方法;

4、run方法必去是public的访问权限,返回类型为void。

如果直接调用线程类的run()方法,这会被当做一个普通的函数调用,程序中仍然只有主线程这一个线程,也就是说,start()方法能够异步地调用run()方法,但是直接调用run()方法却是同步的,因此也就无法达到多线程的目的。

​ 只有通过调用线程类的start()方法才能真正达到多线程的目的。

代码演示:

1.调用start()异步run()

 运行结果:

 可以看出先执行finish后再去执行run()方法

2.直接调用run()方法

运行结果:

 

 可以看出调用run()方法后,先执行run方法,再去执行finish

参考:

Thread系列:run()方法和start()方法有什么区别

线程中start方法和run方法的区别

流明860
关注 关注
  • 2
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
java线程start和run区别详解
08-25
Java线程start和run区别详解 在Java编程线程是一个基础概念,start和run是两个常用的方法,但是它们之间的区别却经常被忽视。本文将详细介绍Java线程start和run区别,通过示例代码帮助大家更好地理解这...
线程run() 和 start() 有什么区别
m0_68464502的博客
06-05 4070
而当我们直接调用run()方法时,则会在当前线程执行,不会产生新的线程run()方法是Thread类的一个普通方法,它是线程实际运行的代码,线程的代码逻辑主要就是在run()方法实现的。start()方法是Thread类的一个启动方法,它会启动一个新的线程,并在新的线程调用run()方法。直接调用run()方法,会像普通方法一样在当前线程顺序执行run()方法的内容,这并不会启动一个新的线程。调用start()方法会创建一个新的线程,并在新的线程并行执行run()方法的内容。
线程start() 和 run()的区别
weixin_38568503的博客
03-08 7792
首先需要知道线程的几个状态以及多线程工作方式。 new 一个Thread,线程进入了新建状态,调用start() 方法,会启动一个线程并使线程进入了就绪状态,当分配到 时间片 后就可以开始运行了。start() 会执行线程的相应准备工作,然后自动执行run() 方法的内容,这是真正的多线程工作。 而直接执行run() 方法,会把run 方法当成一个main 线程下的普通方法去执行,并不会在某个线程执行它,所以这并不是多线程工作。 总的来说:调用start 方法方可启动线程并使线程进入就绪状态,而run
run()和start()的区别
最新发布
m0_64421869的博客
07-27 653
通过两个例子我们可以知道调用start方法可启动线程,可以并发,而run方法只是thread的一个普通方法调用,还是在主线程里执行。这里的意思就是说,star()方法可以异步地调用run()方法,是异步执行,直接调用run()方法是同步执行,因此也就不能达到多线程的目的。这两个方法应该都比较熟悉,把需要并行处理的代码放在run()方法,start()方法启动线程将自动调用 run()方法,这是由jvm的内存机制规定的。并且run()方法必须是public访问权限,返回值类型为void。
Java|多线程与高并发】详解start()方法和run()方法的区别
云泽野の编程日记
02-16 2996
Java并发编程 start()方法和run()方法的区别 以及run()的一些误区
Java线程run()和start()方法的区别
qq_59787564的博客
07-19 581
调用线程对象的start方法会启动一个新线程,并在新线程执行run方法的代码。- run方法是线程的执行体,包含了线程要执行的代码逻辑。通过调用线程对象的run方法,可以执行线程定义的代码。总之,run方法是普通的方法调用,不会启动新的线程,而start方法会在后台启动新的线程,并异步执行run方法的代码。- start方法必须通过线程对象调用,并且会在后台启动一个新线程执行。调用run方法只会在当前线程执行run方法的代码,不会启动新的线程。调用start方法会启动一个新的线程
Java线程run()和start()有什么区别
javamyfriend的博客
06-07 1046
Java线程run()和start()有什么区别
javathread线程start和run区别
09-04
`Thread`类是Java用于创建和管理线程的核心类,而`start()`和`run()`方法是与线程执行密切相关的方法,它们之间存在显著的区别。 首先,`run()`方法是`Runnable`接口或`Thread`类的一个成员方法。当你需要创建...
Java线程start和run方法全面解析
09-01
本文将全面解析Java线程的`start`和`run`方法,以及自定义线程的两种常见方式。 首先,自定义线程有两种主要方法: 1. 实现`Runnable`接口:创建一个类实现`Runnable`接口,并重写`run`方法。然后,将这个实现了...
Java启动线程start和run的两种方法
08-28
Java启动线程start和run的两种方法 Java 启动线程有两种方法,即继承 Thread 类和实现 Runnable 接口。由于 Java 无法实现多重继承,所以一般通过实现 Runnable 接口来创建线程。但是,无论哪种方法都可以通过 ...
Java线程的start方法回调run方法的操作技巧
08-28
面试常见的问题在于理解`start()`方法与`run()`方法的区别。这里我们将详细探讨这两个方法以及它们在Java线程的作用。 首先,`start()`方法是开启新线程的关键,而`run()`方法则是线程执行的具体任务。当你调用...
java线程start()和run()的区别
wittdong的博客
04-20 2232
1、start方法启动了一个新的线程,而run方法不能启动一个新线程,还是在main线程下运行,程序依然是主线程一个线程在运行。2、调用start方法可以启动线程,而run方法只是thread的一个普通方法还是在主线程执行。3、通过start()方法来启动的新线程,处于就绪(可运行)状态,并没有运行,一旦得到cpu时间片,就开始执行相应线程run()方法,这里方法run()称为线程体,它包含了...
Java线程:start 与 run方法的区别
JSANXWT的博客
10-29 157
run方法可以被执行无数次,而star方法只能被执行一次,原因就在于线程不能被重复启动。执行run方法它不会产生新线程,而执行start方法会产生新线程run方法的作用是存放任务代码,而start方法是启动线程run方法是同步方法,而start方法是异步方法。
java Thread的start和run方法的区别
SmileTimLi的博客
02-23 6686
一、认识Thread的 start() 和 run() 概述: t.start()会导致run()方法被调用,run()方法的内容称为线程体,它就是这个线程需要执行的工作。 用start()来启动线程,实现了真正意义上的启动线程,此时会出现异步执行的效果,即在线程的创建和启动所述的随机性。 而如果使用run()来启动线程,就不是异步执行了,而是同步执行,不会达到使用线程的意义 1....
java线程run与start
tangwang5346的专栏
09-29 587
java线程理解
Java线程run()和 start()有什么区别
weixin_45990682的博客
06-28 198
run()方法:定义线程的任务逻辑,直接调用时在当前线程同步执行,不会创建新的线程。start()方法:启动新线程,创建新的线程调用栈,并在新线程异步执行run()方法的内容。
run()方法和start()方法的区别
热门推荐
Evan's Blog ٩(๑❛ᴗ❛๑)۶
09-15 1万+
一、start()和run()方法的区别: 1、start方法用来启动相应的线程; 2、run方法只是thread的一个普通方法,在主线程里执行; 3、需要并行处理的代码放在run方法,start方法启动线程后自动调用run方法; 4、run方法必须是public的访问权限,返回类型为void。 二、进一步的理解 线程run()方法是由java虚拟机直接调用的,如果我们没有...
线程run()和start()区别*
张俊杰 的博客
09-01 2078
start()方法它的作用是启动一个新线程run()就和普通的成员方法一样,可以被重复调用。 这个问题经常被问到,但还是能从此区分出面试者对Java线程模型的理解程度。start()方法被用来启动新创建的线程,而且start()内部 调用了run()方法,这和直接调用run()方法的效果不一样。当你调用run()方法的时候,只会是在原来的线程调用,没有新的线程启动,start()方法才会启动新线程。 start方法: 通过该方法启动线程的同时也创建了一个线程,真正实现了多线程。无需等待run()方法
聊一聊多线程run() 和 start(),挖一挖start0
默默不代表沉默
11-11 4168
首先是结论,应该大家知道: 调用start() 会触发多线程执行 ; 调用run() 还是当做执行了一个普通方法,没有多线程执行。 start()示例: public class MyThread extends Thread { @SneakyThrows @Override public void run(){ sleep(5000); System.out.println("run 内容打印 "); } publ..
Java线程start和run区别
07-12
Java线程有两种启动方式:start()方法和run()方法。 - start()方法:启动一个新线程,并调用线程run()方法。使用start()方法启动线程,系统会为新线程创建一个新的栈,并在新栈执行run()方法。 - run()方法...
写文章

热门文章

  • java线程中start()和run()的区别 4110
  • 使用springboot+thymeleaf实现简单的登录功能,登录后查询全部数据返回给页面 3324
  • Java中的重写(Override) 2016
  • Java中继承和实现的区别【单继承,多实现】 1749
  • 关于springAOP的织入 1413

最新评论

  • springboot+thymeleaf+ajax,上传单(多)个或者下载文件

    CSDN-Ada助手: 云原生入门 技能树或许可以帮到你:https://edu.csdn.net/skill/cloud_native?utm_source=AI_act_cloud_native

  • springboot+thymeleaf+ajax,上传单(多)个或者下载文件

    流明860: 谢谢夸赞,大家一起努力哦

  • springboot+thymeleaf+ajax,上传单(多)个或者下载文件

    ID_ZDQ: 博主写的真的是太详细了,学到了很多东西,非常感谢博主

最新文章

  • ERROR Error: command failed: pnpm install --reporter silent --shamefully-hoist Error: command fail
  • Java中继承和实现的区别【单继承,多实现】
  • Caused by: while scanning for the next tokenfound character ‘%‘ that cannot start any token. (Do no
2022年22篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为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 网站制作 网站优化