为了账号安全,请及时绑定邮箱和手机立即绑定

尽管调用了 Thread 的 run() 方法,为什么 Java 的 main 方法代码仍然执行?

尽管调用了 Thread 的 run() 方法,为什么 Java 的 main 方法代码仍然执行?

回首忆惘然 2022-11-10 16:25:08
public class RunnableThreadExample implements Runnable {    public int count = 0;    public static void main(String[] args) {        RunnableThreadExample instance = new RunnableThreadExample();        Thread thr = new Thread(instance);        thr.start();                while(instance.count != 5) {                        try {                Thread.sleep(500);                System.out.println(" Within main method");            } catch (InterruptedException e) {                // TODO Auto-generated catch block                e.printStackTrace();            }                   }           }    @Override    public void run() {        while(count < 5) {            try {                System.out.println("Sleeping for 500 seconds within run method");                Thread.sleep(500);                          } catch (InterruptedException e) {                // TODO Auto-generated catch block                e.printStackTrace();            }                       count++;        }           }   }我注意到 Sys out within main 方法同时运行,而 Sys out within run ( ) 方法被执行。The output looks as follows:Sleeping for 500 seconds within run methodSleeping for 500 seconds within run method Within main methodSleeping for 500 seconds within run method Within main method Within main methodSleeping for 500 seconds within run methodSleeping for 500 seconds within run method Within main method Within main method Within main method当我们调用 thr.start() 时,不应该在 run() 处完成执行,然后回到 while(instance.count != 5) { ??
查看完整描述

1 回答

?
慕沐林林

TA贡献2016条经验 获得超9个赞

不会从主线程调用您的run方法。相反,创建一个新的执行线程(独立于主线程),并且该新线程执行. 主线程将立即(无需等待新线程发生什么)恢复 . 之后的下一条指令。startrunstart

这种并发正是您要使用Thread.


查看完整回答
反对 回复 2022-11-10
  • 1 回答
  • 0 关注
  • 116 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号