[英]Static method in non static class and multithreading
我有一个具有静态方法的非静态类
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;
}
}
此方法根据参数返回实例。 我很困惑“如果同时进行多个交易,这种方法会不会有任何问题”?
我是说同时进行多个交易会覆盖此方法? 还是每笔交易都会根据参数获得自己的对象?
PS:如果没有什么危害,为什么呢?
我看到的唯一危险是这些行:
lITelcoServices = new DUMMY_Impl(pTransactionMode);
mLogger.Debug("ITransactionHandler Dummy Implementation");
应该检查DUMMY_Impl构造函数的代码。
显然,您正在共享mLogger。
请仔细查看(和/或在此处发布)其Debug方法,以确保您在那里没有遇到并发问题。
我不知道以前的所有人如何确保您没有使用任何共享资源。 您显然是在共享记录器,并且没有告诉您DUMMY_Impl
构造函数的作用。
大多数记录器都是线程安全的,因此归结为您的虚拟实现构造函数。 如果是线程安全的,则您的函数是线程安全的。
由于您没有使用任何静态变量,因此不会遇到多线程问题。 创建的所有局部变量将仅可用于该线程,因此您很好。
当您使用任何静态变量时,情况并非如此,因为它们与多个线程共享唯一的实例
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.