public class Demo {
Map<Object,Object> map;
public void foo(){
map = new HashMap<>();
}
}
public class Demo {
Map<Object,Object> map;
public void foo(){
map = new HashMap<>();
}
}
|
1
额,补充一下,单机多线程的环境下。
|
|
zsl199512101234May 29, 2020
2
为啥要这样做呢
|
|
duwanMay 29, 2020
3
跟在哪初始化有什么关系?又不是局部变量
|
|
Jacky23333May 29, 2020 via Android
4
不是很明白你的目的是什么,是要实现单例模式吗?如果是的话那当然是线程不安全的,你需要考虑多个线程同时调用这个方法会怎样
|
|
ho121May 29, 2020 via Android
5
有,如果 foo 被多个线程调用的话
|
|
duwanMay 29, 2020
6
建议楼主再看看 JVM 内存模型。如果是局部变量会在栈里,没有线程问题。但是你这个 map 是在堆里面,多线程会有问题的
|
|
resistMay 29, 2020
7
大胆写,哪有那么多线程
|
|
10
@zsl199512101234 看到同事代码里有这种骚操作,,,我正好也不太懂,所以发帖问问
|
|
11
@Jacky23333 看到同事代码里有这种骚操作。。
|
|
ChanKcMay 29, 2020 via Android
12
有
|
|
TheCureMay 29, 2020
13
you
|
|
yungo8May 29, 2020 via Android
14
有线程安全问题,但不能说代码一定有问题,只是不好。你得看看实际使用情况,比如假如这是个单例 springmvc controller 那肯定不行,比如后续继续要使用 map 赋值,另外一个线程又把它变成 new Map
|