将线程变量声明为静态和不声明静态有什么区别? 比如:在类中这样声明:private static Thread trd;和private Thread trd;当然我知道变量是静态的,所以每次父类new的时候这个变量都是一个静态的值。但是这样对线程运行,GC回收什么的有区别么?请大家分析以上这样的区别都有哪些?越详细越好。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 主要 的区别就是:private static Thread trd;这个东西在系统运行加载类的时候变量就会被赋值。 没区别不对吧?private Thread trd;这是一个类中的私有变量,所以,至少每次这个类创建新的实例时,该变量都被初始化为null,这样用这个变量调用时都会创建一个新的线程。private static Thread trd;这个是静态变量,当父类每次创建实例时,该变量只被初始化一次,因此不会开启多个线程。这个起码的区别还是有的。 静态变量数属于“类”的 而实例变量是属于“对象的” 每个实例对象new的时候都有一个指针指向他的type类 也就是这个类的元数据 你的静态变量也就放在那里 不受GC管的我不知道这么理解是否正确 静态变量其实是元数据的一部分 而实例变量是数据 元数据自然就不受GC管 前者基本上是这个类的所有实例的某个方法,都可以交给这个static的线程来执行吧后者基本上是一个实例的一个方法,只能叫给自己实例的一个线程这个还是看设计的问题需要把,如果所有该类的所有实例都需要用一个单一的线程来执行,那选static否则可以选非static得 但是这样对线程运行,GC回收什么的有区别么?我回答这个,静态引用变量可以作为GC的根,会长期贮存随代机制存留而不回收,只有当该应用程序退出才会被系统GC,所以一般而言列表或集合尽量不要使用静态全局却不断添加元素很容易内存耗用膨胀因GC无法施展 c# 调用摄像头,只能调用一次,第二次调用就不好使了 水晶报表,如何让详细资料b中的内容不重复出现啊(在线等) DataGrid中显示一个表,如何将当前子行集的导航父行长久隐藏? 问一下能不能动态生成用户控件,我试了试,不报错,但页面上什么也没有,能不能指点一下 [Form]求Word中上面那个颜色选择控件. 求字符串只允许是字母数字和下划线的正则表达式?在线等!!! 请教多任务调度问题!!! 正则表达式求助。。 水晶报表-关于分组显示的问题·急 请问如何将剪贴板中的数据(图象)转换成图像并保存或显示出来呢? 弱弱的请教截取字符的问题 求助:在窗体1点击按钮出现窗体2
没区别不对吧?
private Thread trd;
这是一个类中的私有变量,所以,至少每次这个类创建新的实例时,该变量都被初始化
为null,这样用这个变量调用时都会创建一个新的线程。private static Thread trd;
这个是静态变量,当父类每次创建实例时,该变量只被初始化一次,因此不会开启多个线程。这个起码的区别还是有的。
我不知道这么理解是否正确 静态变量其实是元数据的一部分 而实例变量是数据 元数据自然就不受GC管
否则可以选非static得
静态引用变量可以作为GC的根,会长期贮存随代机制存留而不回收,只有当该应用程序退出才会被系统GC,所以一般而言列表或集合尽量不要使用静态全局却不断添加元素很容易内存耗用膨胀因GC无法施展