私は待機と通知を使用するのが初めてです。コードのテストに問題があります。以下は私の実装です:(注:すべての実装は含まれていません)
public class PoolImp {
private Vector<Connection> connections; // For now maximum of 1 connection
public synchronized Connection getconnection() {
if(connections.size == 1() ) {
this.wait();
}
return newConnection(); // also add to connections
}
public synchronized void removeconnection() {
connections.size = 0;
this.notify();
}
}
以下は私のテスト方法です: conn_1 は最初の接続を取得します。最大 1 つの接続しか許可されていないため、conn_2 は待機状態になります。
これをテストして、removeconnection を呼び出したときに conn_2 が通知を受け、解放された接続を取得するようにします。
テスト: @Test
public void testGetConnections() throws SQLException
{
PoolImpl cp = new PoolImpl();
Connection conn_1 = null;
Connection conn_2 = null;
conn_1 = cp.getConnection();
conn_2 = cp.getConnection();
cp.removeConnection(conn_1);}
}