您的位置:首页 > 其它

局部变量线程安全问题

2018-01-10 15:49 197 查看


局部变量线程安全问题

只看楼主

收藏

回复







mincike





2

求大神给解释下


回复

1楼

2016-02-01 14:29

举报 |个人企业举报垃圾信息举报





TARENAINTERNATIONAL,INC.

java
Java全栈+大数据工程师培训

javajava基础,Flume,Zookeeper实战,MetaStore及Hive执行流程剖析,Spark调优,轻松入门机器学习,免费试听申请!

2018-01-10 15:35 广告







mincike





2

有人吗

回复

2楼

2016-02-01 14:32

举报 |个人企业举报垃圾信息举报





cheng406504325



淼淼淼沝

11

局部变量没有线程安全问题,不用解释了

收起回复

3楼

2016-02-01 14:35

举报 |个人企业举报垃圾信息举报

来自iPhone客户端





mincike: 那图片里打印的结果如何解释呢?

2016-2-1 14:36回复





cheng406504325: 回复
mincike :没看图片

2016-2-1 14:38回复

我也说一句

 





仰望星空Json





淼淼淼沝

11

单例里面存在成员变量才会有线程安全问题,局部变量跟这有什么关系!

收起回复

4楼

2016-02-01 15:20

举报 |个人企业举报垃圾信息举报

来自Android客户端





mincike: 可以看看图片,我知道局部变量没有现成安全问题,但图片里的打印结果
我开始怀疑 局部变量线程安全是否是对的

2016-2-1 15:25回复





mincike: 经多次测试应该uuid内部在线程并发的时候
不做同步的情况下是会产生重复的uuid

2016-2-2 22:21回复





仰望星空Json: 回复 mincike :还有这种情况,学习了

2016-2-3 10:09回复

我也说一句

 





脑放







淼沝

5

这是偶然吧 uuid不会主动检查是否重复的 小概率事件

回复

5楼

2016-02-01 16:55

举报 |个人企业举报垃圾信息举报

来自iPhone客户端





2012敌敌畏





淼淼淼沝

11

这个问题在于你的变量是否被多个线程同时访问的条件,显然,你的这个变量是局部变量,但是你在局部方法块中创建了其它线程,而且其它线程可以访问到你的这个局部变量,所以会出现线程安全问题,解决这个问题你可以把你的变量创建成线程安全类

收起回复

6楼

2016-02-02 08:45

举报 |个人企业举报垃圾信息举报

来自iPhone客户端





mincike: 我知道我的那个testlog是线程不安全的,它是多个线程共享的,我想说的是uuid
,经最终多次测试uuid在并发调用下产生的uuid是会重复的,导致了上述打印结果

2016-2-2 21:59回复





mincike: 针对产生uuid的代码做syncharnized测了很多次倒是没见重复的

2016-2-2 22:02回复

我也说一句

 





yan396986015



淼淼沝

8

静态类成为了一个全局变量,你得看看uuid中是否有成员变量没有做线程安全限制

收起回复

7楼

2016-02-02 13:31

举报 |个人企业举报垃圾信息举报

来自iPhone客户端





mincike: 回头自己研究下
uuid的源码

2016-2-2 22:17回复





yan396986015: 回复
mincike :线程安全主要是看有没有数据共享,而使用静态类就会变成全局共享,所以会有线程安全隐患,想要安全就得加锁

2016-2-3 13:50回复

我也说一句

 





897180673





1

感觉应该是uuid内部的问题.

突然想起了,当初学习汇编的时候,调用函数和传递形参

一个函数调用时在汇编是:call xxxxx

调用函数,传参数,局部变量都是压到栈中的

每调用一次函数,都要往栈中压一次局部变量,函数执行完成,栈就回收了.

所过多次调用函数,那么栈中就有多个局部变量.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: