multithreading - ColdFusion 单例对象池

标签 multithreading coldfusion thread-safety singleton

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

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

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

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

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

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

最佳答案

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

  1. 使用 cflock 授予独占锁
  2. 由于锁定/事务而排队连接到您的数据库
  3. 你有太多的东西在运行,你使用了所有可用于 ColdFusion 的并发线程

所以您的处理方式很好。

希望对您有所帮助。

关于multithreading - ColdFusion 单例对象池,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9820852/

相关文章:

java - 如何从用作 WatchService 的线程调用主线程中的方法?

ios - GCD 对比 @synchronized 对比 NSLock

php - 在非线程环境中使用线程安全扩展 (APC) 有什么危害吗? (PHP)

java - 使用信号量进行虚假唤醒

c++ - 如何同时填充 std::unordered_map?

python - 如何对 python 进程进行单元测试

c++ - 关于使用 QThreadStorage 的线程安全

coldfusion - Coldfusion 中请求的正常内存使用量是多少

coldfusion - 生成多个文件,将它们添加到 zip,然后将 zip 作为文件下载发送。

jquery - Ajax jQuery 调用 ColdFusion 组件