多线程中变量的内存分配

王朝学院·作者佚名  2016-08-27
窄屏简体版  字體: 小  |  中  |  大  |  超大  

usingSystem;usingSystem.Collections.Generic;usingSystem.Text;usingSystem.Threading;usingSystem.Diagnostics;namespaceTestMultiThread

{classPRogram

{

pp s=newpp();staticvoidMain(string[] args)

{

Program dd=newProgram();

Thread th;for(inti =0; i <10; i++)

{

th=newThread(newThreadStart(dd.Test));

th.Name=i.ToString();

th.Start();

Thread.Sleep(10);

}

Console.WriteLine("wait 3 seconds");

Console.ReadKey();

}publicvoidTest()

{

Int32 i=0;

i++;

Console.WriteLine("name:{0}/I vaule:{1}", Thread.CurrentThread.Name,i.ToString());

s.ps();

}

}classpp

{publicvoidps()

{

Int32 i=0;

Thread.Sleep(3000);

i++;

Console.WriteLine("ps:name:{0}/i:{1}", Thread.CurrentThread.Name,i.ToString());

}

}

}

发起N个线程,线程的方法体中再调用其他类的方法,这些被调用的方法也会在内存中开辟出N个空间,且都是单独存在,互补干扰。发起N个线程,每个线程的方法体会开辟新的内存空间,每个方法体中的局部变量是独立存在互补干扰的。测试代码:

发起10个线程,每个线程里的 i 值都为1。说明每个线程方法提都有自己的内存空间。 发起10个线程,每个线程再调用ps()方法,ps()方法体体休眠3秒,然后打印信息到控制台。显示效果为10个线程启动,再等待3秒后,瞬间打印10次ps()内的信息,说明线程方法体里调用其他类方法,这些类方法也会分配多个内存空间。如果ps()使用同一个内存空间,控制台信息会每隔3秒打印一次。

 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
© 2005- 王朝網路 版權所有 導航