Package Org.rui.util;import java.util.arraylist;/** * Object Multiplexing mode * * @author PC * */public class poolmanager{//Connection pool object Publi C Static class Poolitem{boolean InUse = False;object item;//pool data Poolitem (Object item) {This.item = Item;}} Connection Pool Collection Private ArrayList items = new ArrayList ();p ublic void Add (Object item) {This.items.add (new Poolitem (item));} Static class Emptypoolexception extends Exception{}public Object get () throws emptypoolexception{for (int i = 0; i < it Ems.size (); i++) {Poolitem Pitem = (poolitem) items.get (i); if (Pitem.inuse = = False) {Pitem.inuse = True;return Pitem.item;}} throw new Emptypoolexception ();//return null;} /** * Release Connection * @param item */public void release (Object item) {for (int i = 0; i < items.size (); i++) {Poolitem Pitem = (Po Olitem) Items.get (i); if (item = = Pitem.item) {pitem.inuse = False;return;}} throw new RuntimeException (item + "NOT NULL");}}
Package Org.rui.util;import org.junit.test;/** * Object Pool * * There is no restriction that only one object can be created. The same technique applies to creating a fixed number of objects, but * Yes, in which case you have to face the problem of how to share objects in the object pool. If the shared object is a problem, you might consider a check-in (check-in) checkout (check-out) of the shared object as a solution * scenario. For example, in the case of a database, a business database typically limits the number of connections that can be used at a given time. The following example implements the management of these database connections with the object pool. First, the basic management of the object pool object (a pool of objects) is implemented as a separate class. * * @author PC * */interface connection{object get (); void set (Object x);} Class Connectionimplementation implements Connection{public Object get () {return null;} public void set (object s) {}}class connectionpool{//Pool management Object private static Poolmanager pool = new Poolmanager ();//Specify number of connections and add PU Blic static void addconnections (int number) {for (int i = 0; i < number; i++) Pool.add (New Connectionimplementation ());} Get connection public static Connection getconnection () throws Poolmanager.emptypoolexception{return (Connection) pool.get (); Releases the specified connection public static void Releaseconnection (Connection c) {pool.release (c);}} Demo using public class Connectionpooldemo {static{connectionpool.addconnections (5);} @Testpublic void Test () {Connection c = null;try{//Gets the connection c = Connectionpool.getconnection ();} catch ( Poolmanager.emptypoolexception e) {throw new RuntimeException (e);} Set Value C.set (new Object ());//Get C.get ();//Release connectionpool.releaseconnection (c);} @Testpublic void Test2 () {Connection c = null;try{c = Connectionpool.getconnection ();} catch ( Poolmanager.emptypoolexception e) {throw new RuntimeException (e);} C.set (New Object ()); C.get (); Connectionpool.releaseconnection (c);} public static void Main (String args[]) {//Junit.textui.TestRunner.run (Connectionpooldemo.class);}}
Java schema Object Pool Summary code example