我正在尝试实现一个连接池,它具有方法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

09-26 05:38