A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 焚雨成灰 于 2014-4-11 14:28 编辑

当设计一个类的时候,为了提供共享数据,将该数据声明为静态是否合适?
比如卖票程序中,几个线程共享票的数量,将票的数量声明为static是否合适,我怎么总感觉不安全呢?

9 个回复

倒序浏览
既然是变量,肯定不能用final来修饰了,否则就不能改变它的值,一般用final修饰的都是常量或参数
回复 使用道具 举报
一般线程间同步数据都要用到同步函数以保证操作的原子性,不建议直接操作共享变量,
回复 使用道具 举报
将static 修饰的变量弄成私有的,即 private static  变量名,只使本类内部方法调用,这样应该会安全些
回复 使用道具 举报
一般情况下如果某个变量的值是不变的才用 final来修饰,

而静态修饰的变量不一定是不变的,

比如买票这个程序,票的数量是 会改变的,

如果被final修饰,票的数量就不能改变!

需不需要被final修饰,要依情况而定,感觉和安全关系不大!

评分

参与人数 1技术分 +1 收起 理由
枫儿 + 1 赞一个!

查看全部评分

回复 使用道具 举报
使用静态声明就说明这个变量可以被类名调用了,如果不使用静态声明。这个变量只能被实例调用。
回复 使用道具 举报
不需要使用static修饰因为他的生存周期太长,卖票中可以采用单例设计模式,安全的问题可以使用同步锁
回复 使用道具 举报
共享的话就应该不是对象所特有的,应该为静态
回复 使用道具 举报
1.final修饰的变量是不能修改的
2.几个线程共享应该考虑对修改变量值代码加锁,保证线程安全
回复 使用道具 举报
这个有些地方讲得很好可以看一下 http://www.cnblogs.com/rollenholt/archive/2011/08/28/2156357.html
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马