Multithreading ColdFusion单例对象池

Multithreading ColdFusion单例对象池,multithreading,coldfusion,thread-safety,singleton,Multithreading,Coldfusion,Thread Safety,Singleton,在我们的ColdFusion应用程序中,我们有无状态模型对象。 我想要的所有数据都可以通过一个方法调用获得(它在内部调用其他方法而不保存状态) 方法通常要求数据库提供数据。所有方法都是只读的,所以我不必担心线程安全(如果我错了,请纠正我) 因此根本不需要实例化对象。我可以静态地调用它们,但是ColdFusion没有静态方法——调用该方法意味着首先实例化对象 为了提高性能,我为每个模型对象创建了单例。 到目前为止,它工作得很好-每个对象创建一次,然后根据需要访问 现在我担心的是,所有的数据请求将只

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

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

因此根本不需要实例化对象。我可以静态地调用它们,但是ColdFusion没有静态方法——调用该方法意味着首先实例化对象

为了提高性能,我为每个模型对象创建了单例。 到目前为止,它工作得很好-每个对象创建一次,然后根据需要访问

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


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

您使用的单例模式不会导致您描述的问题。如果getOfferData()在其他请求上调用该函数的另一个调用时仍在运行,则这不会导致该函数排队,除非您执行以下操作之一:-

  • 使用cflock授予独占锁
  • 由于锁定/事务,正在排队连接到数据库
  • 运行的东西太多,并且使用了ColdFusion可用的所有并发线程
  • 所以你现在的做法很好

    希望有帮助