java - 如何使用和测试等待和通知

标签 java wait notify

我刚开始使用等待和通知。我在测试我的代码时遇到问题。以下是我的实现:(注意:我没有包含所有实现)

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/

相关文章:

java - 按顺序运行3个线程java

java - Java中的监视器和同步块(synchronized block)(看起来两个线程同时拥有一个监视器)

java - 如何在 CrudRepository 上使用 findAll() 返回 List 而不是 Iterable

java - 查询特定值时如何处理java jdbc中的正斜杠(/)?

java - 如何让 Selenium 等到元素出现?

android - 如何向可点击的电话号码发送短信,包括安卓消息的扩展

java - 无法从字符串创建 JSON 对象

java - 用于存储和使用 XML 元素属性的数据结构

ios - 让 for 循环等待队列完成后再继续

java - 为什么在 Java 的 Object 类中声明 wait() 和 notify()?