黑马程序员技术交流社区

标题: 静态变量不用final修饰是否是个不安全的举动 [打印本页]

作者: 焚雨成灰    时间: 2014-4-10 18:41
标题: 静态变量不用final修饰是否是个不安全的举动
本帖最后由 焚雨成灰 于 2014-4-11 14:28 编辑

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

作者: yanzhendong    时间: 2014-4-10 19:35
既然是变量,肯定不能用final来修饰了,否则就不能改变它的值,一般用final修饰的都是常量或参数
作者: yanzhendong    时间: 2014-4-10 19:40
一般线程间同步数据都要用到同步函数以保证操作的原子性,不建议直接操作共享变量,
作者: fufeng    时间: 2014-4-10 19:47
将static 修饰的变量弄成私有的,即 private static  变量名,只使本类内部方法调用,这样应该会安全些
作者: jingdou56    时间: 2014-4-10 21:58
一般情况下如果某个变量的值是不变的才用 final来修饰,

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

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

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

需不需要被final修饰,要依情况而定,感觉和安全关系不大!
作者: syusikoku    时间: 2014-4-10 22:01
使用静态声明就说明这个变量可以被类名调用了,如果不使用静态声明。这个变量只能被实例调用。
作者: 杨殿生    时间: 2014-4-10 22:18
不需要使用static修饰因为他的生存周期太长,卖票中可以采用单例设计模式,安全的问题可以使用同步锁
作者: 山治0712    时间: 2014-4-10 23:02
共享的话就应该不是对象所特有的,应该为静态
作者: leon_hm    时间: 2014-4-10 23:07
1.final修饰的变量是不能修改的
2.几个线程共享应该考虑对修改变量值代码加锁,保证线程安全
作者: zhangbingyuan    时间: 2014-4-11 11:42
这个有些地方讲得很好可以看一下 http://www.cnblogs.com/rollenholt/archive/2011/08/28/2156357.html




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2