Public classmyDataSource {Private StaticLinkedlist<connection> pool =NewLinkedlist<>(); Private Static Final intInit_connections = 10; Private Static FinalString driver_name = "Com.mysql.jdbc.Driver"; Private Static FinalString URL = ""; Private Static FinalString USER = ""; Private Static FinalString PASSWORD = ""; Static { Try{class.forname (driver_name); for(inti = 0; i < init_connections; i++) {Connection Connection=drivermanager.getconnection (URL, USER, PASSWORD); Pool.addlast (connection); } } Catch(Exception e) {e.printstacktrace (); } } PublicConnection getconnection () {synchronized(pool) { while(Pool.size () <= 0) { Try{wait (); } Catch(interruptedexception e) {e.printstacktrace (); } } if(!Pool.isempty ()) { returnPool.removefirst (); } } return NULL; } Public voidreleaseconnection (Connection Connection) {if(Connection! =NULL) { synchronized(Pool) {pool.addlast (connection); Notifyall (); } } }}
Resources:
"Java Concurrent programming Combat" dragon Fruit College
Java concurrent Programming principle and Combat 24: Simple database connection Pool