有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

带重新填充的java线程安全队列

我不确定我的代理是否完全线程安全。 我不想使用ConcurrentLinkedQueue而不是LinkedList,因为我必须确保队列不是空的,所以getProxy()已经同步

“ActainProxy()”函数由几个线程访问

这足以保证线程安全吗?这种方法正确吗

private static final Queue<Proxy> PROXIES = new LinkedList();

public static Proxy obtainProxy() {
    boolean isProxyOk = false;
    Proxy proxy = null;
    do {
        proxy = getProxy();
        isProxyOk = testProxy(proxy);
    } while (!isProxyOk);
    return proxy;
}

private synchronized static Proxy getProxy() {
    if(PROXIES.isEmpty()) prepareProxies();
    return PROXIES.poll();
}

private static void prepareProxies() {
    PROXIES.add(new Proxy());
    PROXIES.add(new Proxy());
    PROXIES.add(new Proxy());
}

编辑:我的目标是创建一个队列,为请求它的每个线程提供一个代理项


共 (0) 个答案