[已解决问题] 静态方法内部变量是否在不同thread中共享同一内存?
提问时间: 2008-04-02 18:51
悬赏分:5 浏览:287 次

下面是段测试代码,大致的功能是,网页调用一个类的静态方法,在静态方法里,对i这个变量进行2次赋值。疑问是,如果多个网页调用此方法,会不会相互干扰呢?

试验结果表明并不相互干扰,很是困惑。

public partial class Default2 : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
       Response.Write(Class1.Fun1(DateTime.Now.ToLongTimeString()).ToString());
       }

}

public class Class1
    {
        public static int Fun1(string message)
        {
            int i = 0;
            LogHelper.Info(message+"Fun1 step1 i="+i.ToString()+" and to sleep 5sec");
            Thread.Sleep(5000);
           
            i = 2;
            LogHelper.Info(message + "Fun1 step2 i=" + i.ToString() + " and to sleep 5sec");
            Thread.Sleep(5000);
            LogHelper.Info(message + "Fun1 over i=" + i.ToString() + " ");
            return i;
        }

    }


最佳答案
应该不会吧!当访问这个静态方法的时候,里面的变量如果不是静态的话,会被分配到堆里面的吧,当访问结束的时候,会把这部分内容自动销毁,也就是指向堆的地址会重新直到分配给静态函数变量的初时位置。所以局部变量是不会被保存的,静态变量会单独在内存中有一份,不会随着访问的结束而结束

可能有错误!!个人理解而已。
2008/4/3 18:02:52 回答者:荒芜
其它回答(2)
静态方法只要不涉及静态成员就没事吧~~
4个月前   回答者:沙加 - 老鸟四级
同意沙加
4个月前   回答者:张荣华 - 小虾三级
评论
   您需要登录以后才能回答!
我的问题    我要提问


快到期问题

> 问题排行榜

有不合适内容,建议去除