我正在尝试实现一个连接池,它具有方法getFromPool和returnToPool
private java.util.Queue<XXXConnection> xxxConnectionQueue;
public XXXConnection get() {
XXXConnection xxxConnection = null;
if (semaphore.tryAcquire()) {
confServerProtocol = configServerConnectionQueue.poll();
}
return confServerProtocol;
}
protected void returnToPool(XXXConnection xxxConnection) {
if (xxxConnectionValidator.isValid(xxxConnection)) {
if(xxxConnectionQueue.add(xxxConnection)) {
semaphore.release();
}
}
}
在此xxxConnectionValidator在将连接返回到池之前检查连接是否为有效连接。
想要确认java.util.Queue的add和poll方法是否是线程安全的。
最佳答案
java.util.Queue
是一个接口,该接口的实现是否是线程安全的取决于您选择的实现。
Oracle在此处有一小页显示各种“标准”队列的实现:https://docs.oracle.com/javase/tutorial/collections/implementations/queue.html