// NewObjectPoolWithAbandonedConfig return new ObjectPool init with PooledObjectFactory, ObjectPoolConfig, and AbandonedConfig
NewObjectPoolWithAbandonedConfig return new ObjectPool init with PooledObjectFactory, ObjectPoolConfig, and AbandonedConfig
// NewObjectPoolWithAbandonedConfig return new ObjectPool init with PooledObjectFactory ObjectPoolConfig and AbandonedConfig
func NewObjectPoolWithAbandonedConfig(factory PooledObjectFactory, config *ObjectPoolConfig, abandonedConfig *AbandonedConfig) *ObjectPool {
	pool := ObjectPool{factory: factory, Config: config,
		idleObjects:             collections.NewDeque(math.MaxInt32),
		allObjects:              collections.NewSyncMap(),
		createCount:             concurrent.AtomicInteger(0),
		destroyedByEvictorCount: concurrent.AtomicInteger(0),
		destroyedCount:          concurrent.AtomicInteger(0),
		AbandonedConfig:         abandonedConfig}
	pool.StartEvictor()
	return &pool
}
func NewObjectPoolWithAbandonedConfig ( factory PooledObjectFactory , config * ObjectPoolConfig , abandonedConfig * AbandonedConfig ) * ObjectPool { pool := ObjectPool { factory : factory , Config : config , idleObjects : collections . NewDeque ( math . MaxInt32 ) , allObjects : collections . NewSyncMap ( ) , createCount : concurrent . AtomicInteger ( 0 ) , destroyedByEvictorCount : concurrent . AtomicInteger ( 0 ) , destroyedCount : concurrent . AtomicInteger ( 0 ) , AbandonedConfig : abandonedConfig } pool . StartEvictor ( ) return & pool }
NewObjectPoolWithAbandonedConfig return new ObjectPool init with PooledObjectFactory, ObjectPoolConfig, and AbandonedConfig
NewObjectPoolWithAbandonedConfig return new ObjectPool init with PooledObjectFactory ObjectPoolConfig and AbandonedConfig