我有一个非静态类,它有一个静态方法
public class ITelcoServicesFactory
{
public static ITelco GetITransactionHandler(int pTelcoId, int pTransactionMode)
{
ITelco lITelcoServices = null;
if (pTelcoId < 0)
{
lITelcoServices = new DUMMY_Impl(pTransactionMode);
mLogger.Debug("ITransactionHandler Dummy Implementation");
}
return lITelcoServices;
}
}
此方法基于参数返回实例。我很困惑&#34;如果同时发生多笔交易,这种方法会出现任何问题&#34; ?
我的意思是同时多个事务会覆盖此方法?或者每个交易都会根据参数获得自己的对象?
PS:如果没有任何伤害,为什么?答案 0 :(得分:2)
我看到的唯一危险是这些线:
lITelcoServices = new DUMMY_Impl(pTransactionMode);
mLogger.Debug("ITransactionHandler Dummy Implementation");
应检查DUMMY_Impl构造函数的代码。
显然你正在分享mLogger。
在其Debug方法中仔细查看(和/或在此处发布),以确保您没有遇到并发问题。
答案 1 :(得分:2)
我不知道所有以前的人如何确定您没有使用任何共享资源。您显然是共享记录器,并且不知道您的DUMMY_Impl
构造函数是做什么的。
大多数记录器都是线程安全的,因此归结为虚拟实现构造函数。如果它是线程安全的,那么你的函数是线程安全的。
答案 2 :(得分:1)
由于您没有使用任何静态变量,因此不会遇到多线程问题。创建的所有局部变量只能用于该线程,因此您很好。
当您使用任何静态变量时,情况并非如此,因为它们共享具有多个线程的唯一实例