标题: 一个关于静态的疑问 [打印本页] 作者: 李平 时间: 2012-4-18 22:19 标题: 一个关于静态的疑问 class ThreadDemo2
{
public static void main(String[] args)
{
Ticked t1 = new Ticked();
Ticked t2 = new Ticked();
Ticked t3 = new Ticked();
Ticked t4 = new Ticked();
t1.start();
t2.start();
t3.start();
t4.start();
}
}
class Ticked extends Thread
{
private static int tick=100;//为什么加静态???
public void run()
{
while(true)
{
if(tick>0)
System.out.println(Thread.currentThread().getName()+"sale..."+tick--);
else
break;
}
}
}
这个地方加静态是不是因为:4个线程需要调用的票数总共为100,所以不管谁用,用一个就少一个,这是一个数据。存放于共享区中。
所以以后共用的数据是不是都要加上静态? 作者: 胡生蒙 时间: 2012-4-18 22:32
Java类中的静态变量在程序运行期间,其内存空间对所有该类的对象实例而言是共享的,有些时候可以认为是全局变量。因此在某些时候为了节省系统内存开销、共享资源,可以将类中的一些变量声明为静态变量,通过下面的例子
Java代码
public class WeekA{
static class Data {
private int week;
private String name;
Data(int i, String s) {
week= i;
name = s;
}
}
Data weeks[] = {
new Data(1, "Monday"), new Data(2, "Tuesay"), new Data(3, "Wednesday"), new Data(4, "Thursday"), new Data(5, "Friday"), new Data(6, "Saturday"), new Data(7, "Sunday")
};
public static void main(String args[]) {
final int N = 10000;
WeekA weekinstance;
for (int i = 1; i <= N; i++){
weekinstance = new WeekA ();
}
}
} 作者: 王永旺 时间: 2012-4-18 22:33
如果不加静态,就会产生四个对象,当然就不对啦。所以必须要加静态的。