## org.apache.http.pool
Class AbstractConnPool<T,C,E extends PoolEntry<T,C>>

    java.lang.Object
      org.apache.http.pool.AbstractConnPool<T,C,E>

Type Parameters:
  `T` - the route type that represents the opposite endpoint of a pooled connection.
  `C` - the connection type.
  `E` - the type of the pool entry containing a pooled connection.

All Implemented Interfaces:
  ConnPool<T,E>, ConnPoolControl<T>

Direct Known Subclasses:
  BasicConnPool

    @ThreadSafe
    public abstract class AbstractConnPool<T,C,E extends PoolEntry<T,C>>

extends Object
implements ConnPool<T,E>, ConnPoolControl<T>

Abstract synchronous (blocking) pool of connections.

Please note that this class does not maintain its own pool of execution `Thread`s. Therefore, one must call `Future.get()` or `Future.get(long, TimeUnit)` method on the `Future` object returned by the `lease(Object, Object, FutureCallback)` method in order for the lease operation to complete.

Since:
  4.2

Constructor Summary
`AbstractConnPool(ConnFactory<T,C> connFactory, int defaultMaxPerRoute, int maxTotal)`

Method Summary
`void` `closeExpired()` Closes expired connections and evicts them from the pool.
`void` `closeIdle(long idletime, TimeUnit tunit)` Closes connections that have been idle longer than the given period of time and evicts them from the pool.
`protected abstract E` `createEntry(T route, C conn)` Creates a new entry for the given connection with the given route.
`int` `getDefaultMaxPerRoute()`
`int` `getMaxPerRoute(T route)`
`int` `getMaxTotal()`
`PoolStats` `getStats(T route)`
`PoolStats` `getTotalStats()`
`boolean` `isShutdown()`
`Future<E>` `lease(T route, Object state)` Attempts to lease a connection for the given route and with the given state from the pool.
`Future<E>` `lease(T route, Object state, FutureCallback<E> callback)` Attempts to lease a connection for the given route and with the given state from the pool. Please note that this class does not maintain its own pool of execution `Thread`s.
`void` `release(E entry, boolean reusable)` Releases the pool entry back to the pool.
`void` `setDefaultMaxPerRoute(int max)`
`void` `setMaxPerRoute(T route, int max)`
`void` `setMaxTotal(int max)`
`void` `shutdown()` Shuts down the pool.
`String` `toString()`

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

Constructor Detail

### AbstractConnPool

    public AbstractConnPool(ConnFactory<T,C> connFactory,
                            int defaultMaxPerRoute,
                            int maxTotal)

Method Detail

### createEntry

    protected abstract E createEntry(T route,
                                     C conn)

  Creates a new entry for the given connection with the given route.

### isShutdown

    public boolean isShutdown()

### shutdown

    public void shutdown()
                  throws IOException

  Shuts down the pool.

  Throws:
    `IOException`

### lease

    public Future<E> lease(T route,
                           Object state,
                           FutureCallback<E> callback)

  Attempts to lease a connection for the given route and with the given state from the pool.

  Please note that this class does not maintain its own pool of execution `Thread`s. Therefore, one must call `Future.get()` or `Future.get(long, TimeUnit)` method on the `Future` returned by this method in order for the lease operation to complete.

  Specified by:
    `lease` in interface `ConnPool<T,E extends PoolEntry<T,C>>`
  Parameters:
    `route` - route of the connection.
    `state` - arbitrary object that represents a particular state (usually a security principal or a unique token identifying the user whose credentials have been used while establishing the connection). May be `null`.
    `callback` - operation completion callback.
  Returns:
    future for a leased pool entry.

### lease

    public Future<E> lease(T route,
                           Object state)

  Attempts to lease a connection for the given route and with the given state from the pool.

  Please note that this class does not maintain its own pool of execution `Thread`s. Therefore, one must call `Future.get()` or `Future.get(long, TimeUnit)` method on the `Future` returned by this method in order for the lease operation to complete.

  Parameters:
    `route` - route of the connection.
    `state` - arbitrary object that represents a particular state (usually a security principal or a unique token identifying the user whose credentials have been used while establishing the connection). May be `null`.
  Returns:
    future for a leased pool entry.

### release

    public void release(E entry,
                        boolean reusable)

  Description copied from interface: `ConnPool`
  Releases the pool entry back to the pool.

  Specified by:
    `release` in interface `ConnPool<T,E extends PoolEntry<T,C>>`
  Parameters:
    `entry` - pool entry leased from the pool
    `reusable` - flag indicating whether or not the released connection is in a consistent state and is safe for further use.

### setMaxTotal

    public void setMaxTotal(int max)

  Specified by:
    `setMaxTotal` in interface `ConnPoolControl<T>`

### getMaxTotal

    public int getMaxTotal()

  Specified by:
    `getMaxTotal` in interface `ConnPoolControl<T>`

### setDefaultMaxPerRoute

    public void setDefaultMaxPerRoute(int max)

  Specified by:
    `setDefaultMaxPerRoute` in interface `ConnPoolControl<T>`

### getDefaultMaxPerRoute

    public int getDefaultMaxPerRoute()

  Specified by:
    `getDefaultMaxPerRoute` in interface `ConnPoolControl<T>`

### setMaxPerRoute

    public void setMaxPerRoute(T route,
                               int max)

  Specified by:
    `setMaxPerRoute` in interface `ConnPoolControl<T>`

### getMaxPerRoute

    public int getMaxPerRoute(T route)

  Specified by:
    `getMaxPerRoute` in interface `ConnPoolControl<T>`

### getTotalStats

    public PoolStats getTotalStats()

  Specified by:
    `getTotalStats` in interface `ConnPoolControl<T>`

### getStats

    public PoolStats getStats(T route)

  Specified by:
    `getStats` in interface `ConnPoolControl<T>`

### closeIdle

    public void closeIdle(long idletime,
                          TimeUnit tunit)

  Closes connections that have been idle longer than the given period of time and evicts them from the pool.

  Parameters:
    `idletime` - maximum idle time.
    `tunit` - time unit.

### closeExpired

    public void closeExpired()

  Closes expired connections and evicts them from the pool.

### toString

    public String toString()

  Overrides:
    `toString` in class `Object`

Copyright © 2005-2013 The Apache Software Foundation. All Rights Reserved.