public class Pool { //1.连接池大小 private final int poolSize; //2.连接数组对象 private Connection[] connections; //3.连接状态数组 0 表示空闲,1 表示繁忙 private AtomicIntegerArray status; //4.构造方法初始化 public Pool(int poolSize) { this.poolSize = poolSize; this.connections = new Connection[poolSize]; this.status = new AtomicIntegerArray(new int[poolSize]); for(int i = 0;i<poolSize;++i){ connections[i] = new MockConnection(); } } //借连接 public Connection borrow() throws InterruptedException { while (true){ for(int i = 0;i<poolSize;++i){ //获取空闲连接 if(status.get(i) ==0){ if(status.compareAndSet(i,0,1)){ return connections[i]; } } } synchronized (this){ this.wait(); } } } //归还连接 public void free(Connection conn){ for(int i = 0;i<poolSize;++i){ if(connections[i] == conn){ status.set(i,0); break; } } synchronized (this){ this.notifyAll(); } } } class MockConnection implements Connection{ //省略实现的方法 }