最近我的一位同事提出了一段代碼,並詢問了關於代碼的線程安全性的意見。下面是一個例子,說明與代碼相同的場景。聲明爲另一個類的靜態成員的類對象的方法的線程行爲
public class classA
{
public int DoWorkA()
{
//some logic
}
}
public class classB
{
public static classA objA = new classA();
}
public class classC
{
int DoWorkC()
{
return classB.objA.DoWorkA();
}
}
現在,如果ClassB.objA.DoWorkA()是一樣ClassC,D類不同類別的不同實例simulatenously叫等都會有任何線程或「重疊」的問題? objA應該轉換成實例成員嗎?
如果DoWorkA()僅適用於本地變量(在DoWorkA()的範圍內)而不是類成員使其線程安全,那麼它是否足夠?我仍然需要使用鎖嗎? – devanalyst