创建类的实例时,该实例中的所有变量都特定于该实例,并在实例超出范围时被杀死.但它如何在静态方法中工作?假设有两个人在同一时间调用System.Math.Abs().运行时如何区分两个调用者?这是线程进来的地方吗?是否为每个调用者自动创建了单独的线程?
如果我有这样的局部变量:
Increment()
{
int i = getFromDb(); // get count for a customer from db
};
Run Code Online (Sandbox Code Playgroud)
这是一个增加的实例类(每次客户 - 一个实例对象 - 进行购买),这个变量线程是否安全?我听说局部变量是线程安全的,因为每个线程都有自己的堆栈等等.
另外,我认为这个变量是共享状态吗?我在思维部门缺乏的是这个变量将与不同的客户对象(例如John,Paul等)合作,因此是线程安全的,但这是有缺陷的思维,并且在并发编程方面缺乏经验.这听起来很幼稚,但是我在并发编码方面没有很多经验,就像我一般的同步编码一样.
编辑:此外,函数调用getFromDb()不是问题的一部分,我不希望任何人猜测它的线程安全,因为它只是一个调用,指示值是从一个从数据库获取数据的函数分配的.:)
编辑2:此外,getFromDb的线程安全性得到保证,因为它只执行读取操作.