Java 多线程程序运行结果分析:pingpong 的输出顺序
下面程序的运行结果是:
'pongping'
代码示例:
public static void main(String args[]){
Thread t = new Thread(){
public void run(){
Pong();
}
};
t.run();
System.out.print('ping');
}
static void pong(){
System.out.print('pong');
}
分析:
- Thread t = new Thread() 创建了一个新的线程对象 t。
- t.run() 直接调用了线程的 run() 方法,在当前线程中执行了 run() 方法里面的代码,即调用了 Pong() 方法,打印 'pong'。
- System.out.print('ping'); 在当前线程中继续执行,打印 'ping'。
结论:
程序执行的结果是 'pongping',因为代码中直接调用了 run() 方法,而不是 start() 方法,因此线程并没有真正地开始执行,而是在当前线程中执行了 run() 方法。如果使用 start() 方法,程序将会输出 'pingpong',因为 start() 方法会启动一个新的线程,该线程会与主线程并发执行。
原文地址: https://www.cveoy.top/t/topic/jyYT 著作权归作者所有。请勿转载和采集!