【发布时间】:2013-08-28 19:34:05
【问题描述】:
以下 Utility 类在其自身内部调用相同的静态方法,但没有共享全局变量。但看起来方法 nameTo() 是“共享的”并且是一个问题。我说得对吗,它不安全吗?
public class Utility
{
public static MyObject create_1(boolean b)
{
MyObject o = new MyObject();
o.setName(nameTo(b));
return o;
}
public static MyObject create_2(boolean b)
{
MyObject o = new MyObject();
o.setName(nameTo(b));
return o;
}
public static String nameTo(boolean b)
{
if(b)
return "NameA";
else
return "NameB";
}
}
【问题讨论】:
-
该代码没有问题。反正你没有使用线程,你为什么认为这会是个问题?
-
除了
create_1()和create_2()的主体看起来相同之外,这似乎没有什么问题。 -
@MrLore 应该是一个答案。
-
它是一个实用程序类,可能会被并行调用数百次。那么也许 nameTo() 方法可以被不同的布尔值覆盖? create() 方法可以用不同的布尔值调用,这些布尔值将被转发到 nameTo()
-
@MrLore 你不能说 OP 没有使用线程,因为提供的代码示例只有一个类,你不知道它是如何使用的。
标签: java multithreading thread-safety static-methods