我刚开始使用等待和通知。我在测试我的代码时遇到问题。以下是我的实现:(注意:我没有包含所有实现)
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 获得第一个连接。 conn_2 进入等待状态,因为最多只允许 1 个连接。
我想以这样的方式测试这一点:当我调用removeconnection时,conn_2会收到通知并获取已释放的连接。
测试: @测试
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);}
}
最佳答案
为了测试等待和通知,您需要多个线程。否则,等待线程将阻塞,并且永远不会到达通知代码,因为它位于同一个线程上。
附注实现connection pools这不是一件容易的事情。我什至不会打扰,因为you can use ready-made ones .
关于java - 如何使用和测试等待和通知,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9084632/