测试代码:
public class ThreadTest { public static void main(String[] args) throws InterruptedException { for (int i = 0; i < 10; i++) { System.out.println("主线程正在执行(新线程开启之前)" + i); // 让线程睡眠,便于看出线程之间的切换 Thread.sleep(10); } new Thread() { @Override public void run() { for (int i = 0; i < 10; i++) { System.out.println("新线程正在执行" + i); try { Thread.sleep(10); } catch (InterruptedException e) { e.printStackTrace(); } } } }.start(); for (int i = 0; i < 10; i++) { System.out.println("主线程正在执行(新线程开启之后)" + i); Thread.sleep(10); } } }运行结果:
主线程正在执行(新线程开启之前)0 主线程正在执行(新线程开启之前)1 主线程正在执行(新线程开启之前)2 主线程正在执行(新线程开启之前)3 主线程正在执行(新线程开启之前)4 主线程正在执行(新线程开启之前)5 主线程正在执行(新线程开启之前)6 主线程正在执行(新线程开启之前)7 主线程正在执行(新线程开启之前)8 主线程正在执行(新线程开启之前)9 主线程正在执行(新线程开启之后)0 新线程正在执行0 新线程正在执行1 主线程正在执行(新线程开启之后)1 主线程正在执行(新线程开启之后)2 新线程正在执行2 主线程正在执行(新线程开启之后)3 新线程正在执行3 主线程正在执行(新线程开启之后)4 ...可以看出,Java程序一定是从上到下依次执行的。尽管有新线程,也仍要等到执行到start语句才会开启。