JAX-WS Web服务本身就是Singleton。这意味着将使用单个Web服务实例(如Servlet)处理所有请求。
因此,该类的任何成员将在所有请求之间“共享”。就您而言,您无需使成员(即couponMap)成为静态属性。
结论: 不用担心,您的所有线程(请求)都将访问相同的“
couponMap”。因为不再需要
getCouponMapCreationTime了,所以我认为您可以消除
SingletonMap抽象并直接在Web服务类中使用Map。
但是我要补充一些非常重要的内容。如果有多个线程(请求)将访问您的地图,则必须使其成为线程安全的!!!有很多方法可以做到这一点,但是我将给出一个想法:使用a
ConcurrentHashMap代替a
HashMap。这将使您所有的
get(), put(),remove()*** 作都是线程安全的!如果需要更大的作用域,则可以使用同步块,但是请避免使用同步方法,因为瓢太大,并且始终在
this对象上进行同步。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)