别扯,来这里讨论,那边一直被吞
java吧
全部回复
仅看楼主
level 10
ZSsanguosha
楼主
2019年03月23日 09点03分
1
level 10
ZSsanguosha
楼主
这是我原话,你再读一遍。 我总感觉你好像误会什么了。 我并没有说多线程不会存在这问题。我意思这不是多线程的专属知识问题, 在方法里,直接使用全局变量本就不安全。 这和 是不是多线程没有任何关系。 比如说这个
2019年03月23日 09点03分
2
贴吧用户_78UDbDb185
希望可以给个机会沟通一下,您私信屏蔽了
2019年04月13日 08点04分
ZSsanguosha
@贴吧用户_78UDbDb185
啥事?
2019年04月14日 10点04分
level 8
末班车速
静态变量就静态变量,说类变量也行,类变量,成员变量,局部变量,突然扯个全局变量,我也差点懵了
2019年03月23日 11点03分
3
level 8
猥琐的佐助哈
静态变量属于类,叫类变量,所有对象共有。实例变量,实例对象的创建后会被分配地址
2019年03月23日 14点03分
4
level 13
帽子狗
笑死我了,您发啥就吞啥。后面回我的也被吞了,还好我看发帖记录找到这里了。
2019年03月25日 13点03分
5
level 13
帽子狗
我等会下班看
2019年03月25日 13点03分
6
ZSsanguosha
一听就觉得是逼乎出来的,你。 成员与局部的执行效率问题, 具体说明在楼下,我觉得这一点都不扯
2019年03月26日 06点03分
level 10
ZSsanguosha
楼主
成员与局部的执行效率问题,全局变量存于堆中,在程序运行时,是要先找到相应的存储单元,再进行调用。所以,如果一个全量变量会被方法频繁调用,如,遍历该变量,那么,系统就必须多次访问内存中的该单元,影响程序的执行效率。而用局部变量可以有效的避免这个问题
举一个最简单的一个例子
2019年03月26日 06点03分
7
帽子狗
一次案例。。
2019年03月26日 08点03分
ZSsanguosha
@帽子狗
你为什么不手动多次运行试试看看呢
2019年03月27日 07点03分
level 13
刚入门的小白表示看不懂你们在吵什么。
2019年03月26日 06点03分
8
level 13
帽子狗
解释一下
2019年03月26日 08点03分
9
ZSsanguosha
10L
2019年03月27日 07点03分
level 10
ZSsanguosha
楼主
你用这段代码反驳我, 我真的感觉有点不知所措。 你这个也太秀了吧,这么多槽点。
我可以用时间判断效率快慢,是因为它没有无关因素的影响。 但是啊, 你这东西,程序运行这么长时间,GC呢,寄存器呢,操作数栈呢,cache命中呢,都不考虑的吗,也不想想你这个时间为什么波动幅度这么大。
我随便举一个, gc吧,你这个程序运行时,gc肯定是不止回收一次,gc回收数据的时候,对象经常会发生移动, 寻址时间还会一样吗?
不过,我估计这样我解释,你也是不肯接受的。 再写代码的话,你又要举一些看似
正确的
例子来反驳,像上面的多线程 或者 这个代码。这样没完没了。 我现在有点腻了。
这样吧, 我说,局部变量比全局变量的效率快。 是因为, jvm就是这么规定的
你要不信的话,你可以自己去看看jvm源码, 方法我告诉你,
里面有两条指令: 一个是 getstatis, 取静态变量的值, 一个是getfield,取实例变量的值
你去看看这两个怎么实现的, 分别是从哪里取值的。 最后对比下,局部变量是怎么取值的。 看完了,我想你应该能懂,效率为什么会慢
毕竟,在源码实现上,取全局变量的时候,就比局部变量多一步查询,自然效率就慢了
2019年03月27日 07点03分
10
level 7
猪八戒的美好😚
还好我只是一个小白,看不懂你们聊啥,要不然肯定加入这么浓烈的学习氛围
2019年04月13日 08点04分
11
1