我有一段比较常规的.net core mvc代码,就是StartUp函数中注册HttpContextAccessor到系统DI工厂中,如图:多线程
而后调用方是service层,这个service层是使用autofac注入的,并且是单例注入,如图mvc
service调用HttpContextAccesor如图所示:函数
为了测试是否存在线程同步问题,我使用了Thread.Sleep()方法,若是HttpContextAccesor里面的内容被相互影响了,那么后面打印出来的内容应该是同样的,如图:测试
可是事实上,打印出来的内容是不同的,说明HttpContextAccesor不存在着线程同步问题,如图spa
这两个数字表明着两个用户的id信息。.net
结论:线程
即便service使用了单例模式,可是在多线程的状况下,HttpContextAccessor不会出现线程同步问题。3d