线程中run()和start()有什么区别呢?

乔欣 Java面经 发布时间:2022-11-10 23:00:39 阅读数:5263 1 并发编程面试题(2023最新版)
在日常开发中,多线程的定义时--都需将逻辑代码写在run方法体中
但是启动线程需使用start()方法,为什么会这样呢?下文笔者将一一道来,如下所示

run()和start()方法简介

start() 方法用于启动线程
run() 方法用于执行线程任务
 run() 可以重复调用,而start()只能调用一次

start()方法简介

 start()方法来启动一个线程,真正实现了多线程运行
 调用start()方法无需等待run方法体代码执行完毕
 可以直接继续执行其他的代码;
 此时线程是处于就绪状态,并没有运行
然后通过此Thread类调用方法run()来完成其运行状态
 run()方法运行结束, 此线程终止
然后CPU再调度其它线程。

run()方法简介

run()方法是在本线程里的
 是线程里的一个函数
  而不是多线程的

如果直接调用run(),其效果就是一个普通函数运行
直接调用run()方法必须等待run()方法执行完毕才能执行下面的代码
所以执行路径还是只有一条,根本就没有线程的特征
所以在多线程执行时要使用start()方法而不是run()方法。

run()和start()方法的区别

区别1: 功能不同
   start()启动多线程
   run()执行业务逻辑

区别2:是否阻塞
   start()不阻塞
   run()阻塞-属于顺序执行的函数
版权声明

本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。

本文链接: https://www.Java265.com/JavaMianJing/202211/16680929604863.html

最近发表

热门文章

好文推荐

Java265.com

https://www.java265.com

站长统计|粤ICP备14097017号-3

Powered By Java265.com信息维护小组

使用手机扫描二维码

关注我们看更多资讯

java爱好者