声明一个static int 变量,在多个线程中对他进行操作,就会出现数据异常的问题,

问:

那么我们在日常情况下应该如何正常,正确的使用static关键字呢,是一定要和final关键字联合使用吗,
还是什么样的变量可以用static声明什么样的最好不要

----------------------------------------------------------------下面是我获得到的我想要的答案

答:

就是我们平常web开发中,很少会使用主动使用多线程,但是还有一种多线程情况就是每个用户都是一个
线程,当访问量很大的时候是不是也就是多线程了呢,可是这种时候你使用非静态成员变量是没问题的,
因为每个用户都是不同的实例,每个用户都是new的新的类对象,所以类中的变量也都是互相不干扰的,
也就是线程安全的,但如果是静态变量,就是多用户共享,也就是多线程共享,
所以多个用户同时修改数据时就会出现问题,难道我们平常开发中每次使用静态变量都要考虑线程安全
问题吗

追问:

日常web开发中如果不使用多线程,是不用考虑线程安全的问题的对吧。但是如果使用了静态变量,即使不开启多线程,也要考虑多线程安全问题对吗,
因为每个用户都是多个线程,都会同时操作静态变量

追答:

大哥,你这是另一个问题了,我是针对你刚刚的问题答的。如果要针对你现在的问题,
平常不管是用Spring还是Servlet,都是单例的,会在不同请求线程之间共享,
所以其不管是实例变量还是静态变量都会被共享。如果确定要共享,那么需要确保线程安全性。
但是如果要在多个请求间共享可变变量呢?根据业务场景不同而不同,
可以采用我上述提到的java自带的机制及加锁等,也可以采用消息队列,数据库,redis.

追答:

还有一点要纠正你一下,不是只有静态变量才会被共享,一个实例变量被多个线程使用时也是被共享的。
日常web开发,每个http请求一个线程。如果你不涉及共享可变变量,是不需要考虑线程安全性的。
如果你想共享一些信息,对于传统单体应用来说,简单点可以通过session来共享。
还有点,你关于线程安全的东西,建议你去补补理论基础。推荐一本经典书:<<Java并发编程实战>>
国外大牛写的,不是国内的那本。

回复 xbynet:
好的 ,谢谢 ,我刚试了下,您说的对,不是静态变量也会被共享

Java静态变量小感相关推荐

  1. Java 静态变量,静态方法,静态常量(java static 关键字)

    Java 静态变量,静态方法,静态常量  就是变量 ,方法,常量前面添加了static 关键字 为什么要使用静态的呢 有时候在处理问题时会需要两个类在同一个内存区域共享一个数据, 不如现在 Main ...

  2. java 静态变量生命周期(类生命周期)

    java 静态变量生命周期(类生命周期) Static: 加载:java虚拟机在加载类的过程中为静态变量分配内存. 类变量:static变量在内存中只有一个,存放在方法区,属于类变量,被所有实例所共享 ...

  3. java 静态对象赋值_基于Java class对象说明、Java 静态变量声明和赋值说明(详解)...

    先看下JDK中的说明: java.lang.Object java.lang.Class Instances of the class Class represent classes and inte ...

  4. Java 静态变量生命周期

    Java 静态变量生命周期(类生命周期) Static: 加载:java虚拟机在加载类的过程中为静态变量分配内存. 类变量:static变量在内存中只有一个,存放在方法区,属于类变量,被所有实例所共享 ...

  5. Java静态变量的初始化

    Java静态变量的初始化 C/C++在脑海中的印象太深了,以至于一看到 static 的变量(Java中叫做:域),本能的以为它一旦初始化就不能改变了. 原来Java在还有 final . 转自:ht ...

  6. java静态变量需要初始化吗_» Java静态变量初始化顺序浅谈

    Java 类初始化顺序在网上已经有很多文章了,这里不再谈那么多,仅仅谈下Java静态变量的初始化顺序,如果你是Java高手,并且自认为对这个顺序已经掌握到了炉火纯青的境界,请忽视这篇文章. 前天看了Y ...

  7. JAVA静态变量是什么

    java静态变量是什么-Java基础-PHP中文网 在java中,静态变量指的是被static修饰的类的变量:静态变量被所有类实例对象所共享,在内存中只有一个副本,当且仅当在类初次加载时会被初始化. ...

  8. java 静态变量声明_java静态变量怎么声明?

    展开全部 个人的总结 1 静态变量e69da5e6ba9062616964757a686964616f31333337616564只有一份被类的所有实例共享 2 静态变量的声明在编译时已经明确了内存的 ...

  9. java 静态变量,成员变量,局部变量的默认值

    java 静态变量,成员变量,局部变量的默认值 静态变量和成员变量的默认值 判断char是否被赋值 局部变量的默认值 静态变量和成员变量的默认值 静态变量和成员变量的默认值时一样的 public cl ...

  10. java怎么访问静态属性_Java基础——java静态变量面试题

    Java面试中主要考察的就是应聘者的基础知识的掌握情况,静态变量是属于静态存储方式,是java中基础性的内容.下面就为大家准备了10道java静态变量面试题,希望可以帮助到有面试需要的朋友们. 1.s ...

最新文章

  1. win7完美兼容DynamipsGUI(小凡模拟器)攻略
  2. angularJs在线API文档
  3. oracle函数查询数据字典
  4. c 调用易语言dll字节集,总结VC与易语言DLL互相调用的方法
  5. OpenCV高级形态转换的实例(附完整代码)
  6. java web 页面提速
  7. php stdclass,php中new stdclass()用在什么场景
  8. 模线性方程(中国剩余定理+扩展中国剩余定理)
  9. 初创公司 经营_LibreCorps指导人道主义初创公司如何运行开源方式
  10. HTML页面模板代码
  11. Java的三种技术架构是什么?
  12. 网络出版服务许可证 你了解吗?
  13. Android webview与js交互
  14. 分享舍得网开发经验(修改版)(转载)
  15. 东莞 小学计算机编程大赛,小学生编程大赛【小学生大赛自我介绍】
  16. uniapp 使用map组件 动态自定义标记点图标及内容文字
  17. u盘格式化后如何恢复数据,三步轻松恢复!
  18. excel中文本格式如何批量转化成数字
  19. Young氏双缝干涉实验近似公式推导的传统谬误
  20. 这款视频录制剪辑软件千万别错过!

热门文章

  1. 警告:MySQL-server-5.6.26-1.el7.x86_64.rpm: 头V3 DSA/SHA1 Signature, 密钥 ID 5072e1f5: NOKEY
  2. 小程序开发,不现实用户的头像!
  3. |Vijos|NOIP2015|模拟|P1975 扫雷游戏
  4. 鼎信通达gsm网关和asterisk对接的调试
  5. useradd添加用户
  6. Centos 6让SVN提交文件自动更新到nginx的WEB目录
  7. SET NOCOUNT
  8. [原]超快速搞定linux的vnc
  9. Java开发笔记(一百四十三)FXML布局的基本格式
  10. 反射(一)动态加载类