- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我有一个为 bean 定义的 Spring CommonsPoolTargetSource
。我试图了解池的工作原理,以及何时将对象返回到池中。
具体来说,如果我有一个 worker,它接受一个池对象并在其上调用两个方法,如下所示:
public class MyWorker {
@Resource
Foo pooledFoo;
void doWork()
{
pooledFoo.doStepA();
pooledFoo.doStepB();
}
}
从我运行的测试中可以看出,pooledFoo
实际上不是 Foo
的实例,而是 Pool 提供的代理。上面的流程是:
foo
上调用 doStepA() 从池中检索一个值(如果一个值不可用则阻塞线程),pooledFoo
实例返回到池中doWork
方法,该方法继续如果这是正确的(如果不正确请告诉我),假设调用 doStepB()
时从池中返回的 pooledFoo
是否公平?与为 doStepA()
返回的实例不同吗?
最佳答案
您对流程的描述是正确的——对象将在每次调用前从池中借用,然后返回给它。
但是,您的下一个假设是错误的 - stepB
完全有可能针对与 stepA
相同的池化实例调用。这取决于池中的“流失”——不同线程借用和归还对象的频率。在低负载下,可能会重复使用相同的对象。
所以这里没有任何保证。对于池化对象,您通常希望将池化对象保持在适合下一个借用者使用的状态,而不管借用者是否是同一线程。
关于java - Spring 对象池和线程阻塞,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4114020/
我在一次采访中被问到这个问题,但无法回答。也没有找到任何相关信息。 最佳答案 正如 Docker 文档中所述,Docker 注册表是: [...] a hosted service containin
我目前正在为我的应用程序上的所有用户使用单个 mysql 连接。我想开始使用一个池(它应该更优化,对吧?)但我有一个“结构”问题:createPool 方法只适用于回调,我不明白如何通过与 socke
据我所知,“testOnBorrow”和“validationQuery”参数正合我意,但它们似乎没有按预期工作。 我启动应用程序,运行一些查询,一切正常。然后我重新启动 postgres 服务器 -
我需要解决 Entity Framework 核心中的 Multi-Tenancy 问题。每个租户都有自己的数据库(由于历史原因,无法更改)。 我将按照许多地方的建议使用上下文工厂(example 1
我有两个文件: x.py class BF(object) def __init__(): . . def add(self,z): . . y.py from y
我是一名优秀的程序员,十分优秀!