黑马程序员技术交流社区
标题:
多线程售票中的问题
[打印本页]
作者:
冯瑞君老师
时间:
2011-12-18 11:30
标题:
多线程售票中的问题
定义了100张票要卖,我开了3个窗口,结果相当于卖了300张票,我看毕老师的视频说是定义成静态的就行了 ,我不明白为什么?求助详解!
作者:
宋双
时间:
2011-12-18 11:33
定义成静态就表示这部分数据被共享了,等于100张票被共享到3个窗口来卖了
作者:
t_mac
时间:
2011-12-18 11:38
静态成员变量: 位于“数据区”,无论多少个对象该变量在内存中都只有一份,
如果你把它定义为static 也就是共享了你的100张票,三个窗口都来卖这100张,不会出现每个窗口都卖100张票 的情况
作者:
余松霖
时间:
2011-12-18 11:41
不定义成静态就相当于三个窗口每个窗口都有100张票。 静态之后这个100就是共享数据了。相当于三个窗口总共卖100张票。
作者:
刘健
时间:
2011-12-18 11:49
定义成静态表示这个变量可以被线程共享
作者:
应国炎
时间:
2011-12-18 21:36
如果定义成静态,则所有对象共享一个变量。 因为静态随着类的加载而加载,在定义对象之前就已经存在了,所以创建对象,不会再重复创建这个变量,直接使用了,且使用的都是同一个
作者:
曾运
时间:
2011-12-18 22:26
用static修饰该变量后, 该变量为全局共享变量,意思是3个售票窗口共享100张的票,当A窗口卖了一张后,B窗口出售的时候得到的票是99张的 而不是100张,如果不是static修饰该变量,那么每个窗口都出售100张票,总共的票数就是300了,而不是100.
作者:
黄达标
时间:
2011-12-19 00:31
定义成静态的,三个窗口共享这个静态数据,对象创建之前就已经随类加载。
比如,窗口1执行一次完毕,100变成99;然后切换到窗口2,窗口2就从99开始执行,而不是从100开始,不会重复之前的100了;以此类推。
作者:
刘基军
时间:
2011-12-19 09:53
1.Static关键字,修饰变量或方法后,即为静态变量或方法,是属于类的;
2.静态变量的初始化,是在加载main()方法之前进行的,所以当后面进行创建对象,所有的对象都是使用这一个变量(共享这个静态变量)。
class Test
{
static int i = 100;
public static void main(String[] args)
{
Test t1 = new Test();
t1.i--; //也可写成:Test.i--
System.out.println(t1.i);
Test t2 = new Test();
System.out.println(t2.i);
//测试结果:
//99
//99
}
}
复制代码
作者:
刘博
时间:
2011-12-19 10:41
静态是说这数据被所有的共享,也就是说,不管你开几个窗口,都共享这100张票
作者:
杨强
时间:
2011-12-19 11:44
把变量定义成静态,所有类会共享这个静态变量,一个线程卖了一张 这个静态变量-1 这样就保证开多少线程卖的都是100张票
作者:
郝锡强
时间:
2011-12-19 12:24
非要这样可以通过接口完成
作者:
为梦而战
时间:
2011-12-19 15:14
Static 后,多个窗口相当于多个线程,共享100张票,其实用接口更好!
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2