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

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 method

Sleeping for 500 seconds within run method

 Within main method

Sleeping for 500 seconds within run method

 Within main method

 Within main method

Sleeping for 500 seconds within run method

Sleeping for 500 seconds within run method

 Within main method

 Within main method

 Within main method

当我们调用 thr.start() 时,不应该在 run() 处完成执行,然后回到 while(instance.count != 5) { ??


回首忆惘然
浏览 117回答 1
1回答

慕沐林林

不会从主线程调用您的run方法。相反,创建一个新的执行线程(独立于主线程),并且该新线程执行.&nbsp;主线程将立即(无需等待新线程发生什么)恢复 . 之后的下一条指令。startrunstart这种并发正是您要使用Thread.
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java