首先创建一个简化版的主方法(main())
public static void main(String[] args){
MyThread mt=new MyThread();//创建一个MyThread类对象
mt.run();//调用一个run方法
mt.start();//调用一个start方法
...
}
其次设置一个线程任务run方法
public void run(){
for(...)
{..... }
}
内存分析:
方法的执行需要栈内存,首先程序执行入口(main方法)压栈执行,并在主方法中逐行执行,而在其中有创建对象mt,该对象在堆内存中分配了一段空间,然后将其地址值赋值给变量,mt就可以通过该地址找到变量。
接下来执行mt.run()(调用一下run方法),该方法压栈执行,这样该程序就为单线程程序(由main线程执行),但是调用mt.start()方法,这时就会开辟一个新栈空间,再执行run方法。
以此类推…
所以,run方法不是在主方法中执行,而是在新栈中执行,这样就相当于两个进程并发进行。
对于CPU而言,就有了选择的权利,它可以执行主方法,也可以执行run方法。
多线程好处:能使多个线程之间互不影响(在不同的栈空间中)。