为什么 Java main 方法代码在调用线程的 run( ) 方法的情况下仍会执行?


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++;
        }       
    }   
}

我在执行run((方法中的sys Out时同时在主方法中同时运行这些系统。

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方法将从主线程中调用。相反,start创建了一个新的执行线程(独立于主线程(,并且新线程执行run。主线程将立即(无需等待新线程发生的事情(恢复start之后的下一个指令。

这种并发是您要使用Thread的原因。

最新更新