Java 中类的静态方法会不会出现多线程调用时资源替换的情况?

2014-08-20 09:35:11 +08:00
 vainly
如题,有两个线程Thread_A,Thread_B同时调用S.compare(String src,String target)。

在运行中Thread_A调用传入了两个参数"this is test ","test",但在compare方法内sleep了,

线程Thread_B调用传入了两个参数"123","123",在compare比较完成,准备返回时sleep,

Thread_A激活,此时会不会直接把Thread_B的结果返回?

@Livid 技术主题中没有java节点...
3237 次点击
所在节点    程序员
7 条回复
davepkxxx
2014-08-20 09:39:41 +08:00
不会
zuroyu
2014-08-20 09:51:18 +08:00
jamesxu
2014-08-20 09:57:37 +08:00
Google: static method multiple threads java
vainly
2014-08-20 10:19:23 +08:00
@davepkxxx 为什么?

@zuroyu 嗯,知道有java节点,我的意思是在技术主题下的节点中,没有java节点,可能是热度不高吧。

@jamesxu 谢谢,找到了两个答案,挺详细的。
http://www.coderanch.com/t/374552/java/java/Static-methods-thread-safety
http://stackoverflow.com/questions/11535237/local-variable-in-static-method-and-thread-safety
Livid
2014-08-20 10:43:41 +08:00
@vainly 好的 会加上
davepkxxx
2014-08-20 10:47:34 +08:00
@vainly 有异步安全隐患的是可能被多个线程同时访问的变量引用,比如静态变量。
vainly
2014-08-20 15:52:45 +08:00
谢谢@Livid 大大

@davepkxxx 嗯嗯,对于共享资源才会有线程安全问题。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/128861

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX