ColdFusion单例对象池

问题描述:

在我们的ColdFusion应用程序中,我们有无状态的模型对象。 我想要的所有数据都可以通过一个方法调用(它在内部调用其他方法而不保存状态)。ColdFusion单例对象池

方法通常会询问数据库中的数据。所有的方法都是只读的,所以我不必担心线程安全(如果我错了,请纠正我)。

所以没有必要实例化对象。我可以静态地调用它们,但ColdFusion没有静态方法 - 调用该方法意味着首先实例化对象。

为了提高性能,我为每个Model对象创建了单例。 到目前为止它效果很好 - 每个对象都创建一次,然后根据需要进行访问。

现在我担心所有的数据请求只会经过1个模型对象。 我应该吗?我的意思是如果在我的对象上有一个方法getOfferData(),并且它很耗时。 如果有几个客户想要访问它,该怎么办? 第二个请求会等待第一个请求完成还是在单独的线程中执行?毕竟,它是同一个对象。

我应该为此实现某种对象池吗?

您正在使用的单例模式不会导致您描述的问题。如果getOfferData()仍在运行时,该功能的其他呼叫会叫上一个不同的请求,那么这将不会导致其排队,除非你做下列操作之一: -

  1. 使用CFLOCK授予独占锁
  2. 获取排队连接到你的,因为锁定/交易
  3. 你必须运行太多的东西,你利用一切可利用的ColdFusion

所以你要了解它的方式是好的可用的并发线程的数据库。

希望有所帮助。

+0

感谢您的回答。你被怀疑清除了:) – Leonti 2012-03-22 14:26:54