[英]Is this utility class with 2 static methods threadsafe?
以下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";
}
}
由于您的nameTo()
方法是无状态的,因此在多线程上下文中没有问题。 您可以根据需要在线程之间共享代码。 重要的是数据。
所有静态方法在线程之间共享。 并且由于nameTo()
方法没有使用的任何共享状态 ,因此它是线程安全的 。
class Utility{
private static int sharedValue; //something like counter of how many times nameTo() is called
public static String nameTo(boolean b){
//logic
sharedValue++; //this will not be thread safe as it is shared state and being updated in parallel
}
}
您没有处于global state
,因此我看不到任何线程安全问题。 没有一种方法可以更改任何shared data
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.