在java程序中,main()方法本身就是一个线程,即主线程。现自定义了一个线程(如图2),在main方法中通过jvm调用此线程。main方法作为主线程会首先入栈,并且此栈中仅包含main方法一个进程,虽然在main方法中调用了自定义线程,但是运行的机制是,在调用自定义线程后,自定义线程也会入栈,但入的不是main方法的栈,而是一个空的栈。此时cpu会进行程序执行,cpu在对多线程执行时,其处理机制是随机的,这也解释了为什么每次程序运行的结果都不同。
注:每创建一个自定义线程,其入的栈都是一个空栈。