前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Java并发编程:为什么我们调用 start()方法时会执行 run()方法

Java并发编程:为什么我们调用 start()方法时会执行 run()方法

作者头像
用户1289394
发布2023-08-22 16:54:00
发布2023-08-22 16:54:00
2530
举报
文章被收录于专栏:Java学习网Java学习网

在Java并发编程中,调用start()方法时会启动一个新的线程,并且该线程会执行run()方法。这与Java语言本身的设计有关,具体原因如下:

一、线程启动方式

在Java中,线程可以通过两种方式进行启动,一种是继承Thread类并重写其run()方法,另一种是实现Runnable接口并实现其run()方法。无论哪种方式,都需要调用start()方法来启动线程。

二、线程状态

在调用start()方法后,线程并不能立即开始执行run()方法,而是处于就绪状态(Runnable),等待线程调度程序为其分配CPU时间片,并使其进入运行状态(Running)。

当线程获得CPU资源后,就会自动调用其对应的run()方法,开始执行线程代码。

三、线程上下文切换

在多线程并发执行的环境下,线程之间使用共享的内存空间,并通过CPU的上下文切换机制来实现线程之间的切换。

正因为Java中调用start()方法时只是将线程设置为就绪状态,所以多个线程可以并发地进行切换和执行。

四、回调(Callback)机制

在Java中,Thread类中的start()方法实际上是一个异步调用,它会立即返回并继续执行下一条语句,而不会等待线程执行完毕。

当新线程启动并开始执行run()方法时,会通过回调机制来通知Thread类实例已经完成了线程的执行,并且组织相应的资源回收等操作。

因此,在Java中调用start()方法时会执行run()方法,是由于Java语言本身的设计和多线程的实现方式而决定的。这种设计可以让我们更加方便地进行多线程编程,并允许多个线程并发地执行,提高了程序的执行效率和性能。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-07-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Java学习网 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档