多线程start();之后会开辟新的栈空间
在多线程中,线程每次开启调用start();方法的时候,都会在内存中开辟一个新的栈空间让run();方法执行:
以下面的一端代码作为解析:
1 public static void main(String[] args) { 2 MyThread mt1 = new MyThread(); 3 MyThread mt2 = new MyThread(); 4 mt1.run();//这是属于main线程的 5 mt1.start();//开辟一个新的栈空间 6 mt2.start();//又开辟一个新的栈空间 7 8 9 }
首先main方法进栈,每次一个线程对象调用start方法都会在内存中开辟一段新的栈空间,如图所示:
迎风少年