2017-06-22 67 views
-1

可以说我有一类参数静态方法,如下所示:当一个静态的方法是从多个源称为

public static string NumberToLetter(int num) 
{ 
    string colCharset = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; 
    string Letter = String.Empty; 
    //goes into loop using the parameter 
    //does some logic 
    return Letter; 
} 

现在发生了什么时,这个静态方法是从其他类调用在同一时间?

或者当第一个类调用此方法并开始执行时,另一个类在执行第一个类请求时调用此静态方法?

会有什么行为?循环中的参数值会发生什么?

+0

你知道种族条件是什么以及如何避免吗? –

+0

*** int num *** btw的相关性是什么? –

+0

@ΦXocę웃使用内部循环 –

回答

2

你的函数是静态的,你的局部变量不是。如果没有外部静态资源的依赖关系,那么它应该工作得很好。

如果您传递参考参数或可变对象,将会是完全不同的问题。

+0

我认为当第二个调用者调用时参数值将被改变。 –

+0

@SangitGurung它不是。这些方法在[单独的激活帧]中执行(https://docs.oracle.com/javase/specs/jls/se8/html/jls-15.html#jls-15.12.4.5)。 –

3

此静态方法中的变量是本地的,因此它们将为每个调用创建。对于n次呼叫,您将有n份这些变量的副本。您的参数不是参考类型,因此您的参数也不共享。

除非您在方法中共享变量/属性/字段,否则多个调用都是线程安全的,如果这就是您的意思。

+0

清理了很多 –

相关问题