我写的代码危险吗?

liuxiaohui1987 2009-09-14 03:13:20
刚看到题目有点耸人听闻,听我详说
写了一个JAVA WEB程序,放在服务器上运行的,主要业务就是对图片的读写操作和数据库之间的读写操作,程序平均用时700-800毫秒。在程序里有个主要业务类,大部分的处理都在里面,类的一开始我就定义的一大片全局变量,里面大部分还是静态变量。然后就在类里类外一顿狂调。
最近有个同事提醒我这样不好,当服务器访问量很大的时候,在线程里会造成混乱。可能还有别的问题。
小弟一时还是不太明白其中的原理,1是,全局变量和局部变量在这种情况下有什么区别,该怎么改善我这程序。
2是,静态变量的问题/3是,以后的程序该注意些什么,放到服务器上的。
希望大家给我些建议,感谢!
...全文
212 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
liuxiaohui1987 2009-09-18
  • 打赏
  • 举报
回复
线程同步
德意志军工 2009-09-16
  • 打赏
  • 举报
回复
解决静态变量共享冲突,可以对容易产生冲突的操作进行同步。
不过需要注意的是:千万注意同步嵌套,造成同步死锁!!
不知高手有什么解决方案!!
请教!!请教!!
billhepeng 2009-09-15
  • 打赏
  • 举报
回复
http://developer.51cto.com/art/200903/116159.htm
liuxiaohui1987 2009-09-15
  • 打赏
  • 举报
回复
大家不要光顶人家啊,各抒己见a !
现在是线程不安全,因为定义的静态变量太多,5个人同时访问serlet就出问题了,
正在找解决线程不安全的办法。
大家说说!
tinsang 2009-09-15
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 fujilin 的回复:]
效率上来讲是局部变量好,全局变量会占用内存直到程序退出,
静态变量通过对象直接访问,但只能加载一次,以后不能改变

[/Quote]
又没有说是final的,怎么就不能改变!
liguangwen86 2009-09-15
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 fujilin 的回复:]
效率上来讲是局部变量好,全局变量会占用内存直到程序退出,
静态变量通过对象直接访问,但只能加载一次,以后不能改变,

[/Quote]顶
zhang_yu_QIN 2009-09-15
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 fujilin 的回复:]
效率上来讲是局部变量好,全局变量会占用内存直到程序退出,
静态变量通过对象直接访问,但只能加载一次,以后不能改变,

[/Quote]

这位说的差不多了。
liuxiaohui1987 2009-09-15
  • 打赏
  • 举报
回复
请教!请教!
感谢指点。
怎么避免共享冲突能不能说的再详细点啊。
德意志军工 2009-09-14
  • 打赏
  • 举报
回复
请教!!请教!!
静态变量是类级共享,在web项目中有可能导致共享冲突。
特别是类中的方法执行时间比较长时,静态变量就更有可能有共享冲突的危险。

个人认为:
实例化对象有两个原因:
1、每个实例需要独立保存数据。
2、类中数据访问频繁,为防止共享冲突而生成多个实例。
只是个人想法。
请教!!请教!!
simple_pai 2009-09-14
  • 打赏
  • 举报
回复
我也不清楚 帮顶下~~~
liuxiaohui1987 2009-09-14
  • 打赏
  • 举报
回复
没有,多少分了,大家包涵一下,以后加分!
fujilin 2009-09-14
  • 打赏
  • 举报
回复
效率上来讲是局部变量好,全局变量会占用内存直到程序退出,
静态变量通过对象直接访问,但只能加载一次,以后不能改变,

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧